Варианты использования для регулярного выражения находят/заменяют

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
7
задан 3 revs 3 September 2009 в 15:49
поделиться

10 ответов

Только на прошлой неделе я использовал regex, находят/заменяют для преобразования файла CSV в XML-файл.

Достаточно простой сделать действительно, просто нарубите каждое поле (к счастью, оно не имело никаких завершенных запятых), и пододвиньте его обратно с соответствующими тегами вместо запятых.

2
ответ дан 7 December 2019 в 01:28
поделиться

Мне нравится использовать regexps для переформатирования списков объектов как это:

int item1
double item2

кому:

public void item1(int item1){
}
public void item2(double item2){
}

Это может быть средством сохранения достижения.

1
ответ дан 7 December 2019 в 01:28
поделиться

Regex помогают заменить целые слова с помощью границ слова.

(\b\w+\b)

Таким образом, можно заменить нежелательные слова в файле, не нарушая слова как Сканторп

2
ответ дан 7 December 2019 в 01:28
поделиться

Я использую все это время, когда кто-то отправляет мне список терпеливых чисел посещения в столбце (скажите 100-200), и мне нужны они в '0000000444', '000000004445' формат. творит чудеса для меня!

Я также использую его для вытаскивания адресов электронной почты в электронном письме. Я часто посылаю электронные письма группы, и все возвращенные возвраты возвращаются в одном электронном письме. Так, я regex, чтобы вытянуть их всех и затем бросить их в строковый var для удаления из базы данных.

Я даже записал немного диалоговой прогр для применения regex к моему буферу обмена. Это захватывает содержание, применяет regex и затем загружает его назад в буфер обмена.

1
ответ дан 7 December 2019 в 01:28
поделиться

Вчера я взял создать оператор таблицы, который я сделал для таблицы Oracle и преобразовал поля в setString () вызовы метода с помощью JDBC и PreparedStatements. Имена полей таблицы были отображены на моих свойствах класса, таким образом, поиск regex и замена были идеальным соответствием.

Создайте Текст таблиц:

...
field_1 VARCHAR2(100) NULL,
field_2 VARCHAR2(10) NULL,
field_3 NUMBER(8) NULL,
field_4 VARCHAR2(100) NULL,
....

Мой поиск Regex:

/([a-z_])+ .*?,?/

Моя замена:

pstmt.setString(1, \1);

Результат:

...
pstmt.setString(1, field_1);
pstmt.setString(1, field_2);
pstmt.setString(1, field_3);
pstmt.setString(1, field_4);
....

Я затем прошел и вручную установил интервал положения для каждого вызова и изменил метод на setInt () (и другие) в случае необходимости, но это работало удобное на меня. Я на самом деле использовал его три или четыре раза для подобного поля к преобразованиям вызова метода.

2
ответ дан 7 December 2019 в 01:28
поделиться

Regex очень удобен любое время, я пытаюсь заменить значение, которое охватывает несколько строк. Или когда я хочу заменить значение чем-то, что содержит разрыв строки.

Мне также нравится этот, можно соответствовать вещам в регулярном выражении и не заменить полное соответствие с помощью $ # синтаксис для вывода части соответствия, которое Вы хотите поддержать.

0
ответ дан 7 December 2019 в 01:28
поделиться

Я соглашаюсь с Вами на точках 3, 4, и 5, но не обязательно указывает 1 и 2.

В некоторых случаях 1 и 2 легче достигнуть использования анонимного макроса клавиатуры.

Этим я означаю делать следующее:

  1. Расположите курсор на первую строку
  2. Запустите запись макроса клавиатуры
  3. Измените первую строку
  4. Расположите курсор на следующую строку
  5. Остановите запись.

Теперь все, что необходимо для изменения следующей строки, должно повторить макрос.

Я мог жить с поддержкой regex, но не мог жить без анонимных макросов клавиатуры.

0
ответ дан 7 December 2019 в 01:28
поделиться

Первой вещью, которую я делаю с любым редактором, является попытка выяснить, что это - причуды Regex. Я использую все это время. Ничто действительно сумасшедшее, но удобно, когда необходимо скопировать/вставить наполнить между различными типами текста - SQL <->, PHP является тем, который я чаще всего делаю - и Вы не хотите пукать вокруг внесения того же изменения 500 раз.

0
ответ дан 7 December 2019 в 01:28
поделиться

Одна вещь, для которой я использую его в веб-разработке все время, лишает некоторый текст своих HTML-тэгов. Это, возможно, должно было бы быть сделано для очистки ввода данных пользователем для безопасности, или для отображения предварительного просмотра новостной статьи. Например, если у Вас есть статья с большим количеством HTML-тэгов для форматирования, Вы не можете только сделать ОСТАВЛЕННЫЙ (article_text, 100) + '...' (плюс "чтение больше" ссылки) и рендеринг это на странице рискуя тем, чтобы повредить страницу путем разделения независимо HTML-тэга.

Кроме того, я должен был разделить теги img в записях базы данных, которые связываются с изображениями, которые больше не существуют. И давайте не забывать проверку веб-формы. Если Вы хотите сделать пользователя, ввел корректный адрес электронной почты (синтаксически говорящий) в веб-форму, которая это о единственном способе проверить его полностью.

1
ответ дан 7 December 2019 в 01:28
поделиться

Я только что вставил длинную последовательность символов в строковый литерал и теперь хочу разбить ее на конкатенацию более коротких строковых литералов, чтобы она не переносилась. Я также хочу, чтобы он был читабельным, поэтому хочу разбивать только после пробелов. Я выделяю всю строку (без кавычек) и выполняю замену только в выделении с помощью этого регулярного выражения:

/.{20,60} /

... и этой замены:

/$0"¶         + "/

... где pilcrow - это фактический перевод строки, и количество пробелов меняется от одного инцидента к другому. Результат:

String s = "I recently discussed editors with a co-worker. He uses one "
         + "of the less popular editors and I use another (I won't say "
         + "which ones since it's not relevant and I want to avoid an "
         + "editor flame war). I was saying that I didn't like his "
         + "editor as much because it doesn't let you do find/replace "
         + "with regular expressions.";
1
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: