Работа с текстом на java

146
28 мая 2019, 19:10

Программа выдает поток текстовых данных типа:

6502-030029
6300-030046
6100-04
6100-02

Задача: если последняя часть числа содержит 6 символов разделить их таким образом

6502-03-0029
6300-03-0046
Answer 1

Разделяете строку по -, проверяете вторую половину на 6 символов и убираете ненужные:

static String process(String text) {
    String[] parts = text.split("-");
    if (parts[1].length() == 6) {
        return parts[0] + "-" + parts[1].substring(0, 2) + "-" + parts[1].substring(2);
    }
    return text;
}
public static void main(String[] args) throws Exception {
    for (String text : Arrays.asList("6502-030029", "6300-030046", "6100-04", "6100-02")) {
        System.out.println(process(text));
    }
}

Еще можно через регулярные выражения (в этом случае описываем шаблон строки).

  • . -- любой символ. Для текущей задачи можно просто цифры искать через \d или [0-9], но ради краткости шаблона использую .
  • - -- просто тире -
  • () -- круглые скобки служат для захвата группы символов, которые после вытаскиваем через group

Код:

static String processRegExp(String text) {
    Pattern p = Pattern.compile("(....-)(..)(....)");
    Matcher m = p.matcher(text);
    if (m.find()) {
        return m.group(1) + m.group(2) + "-" + m.group(3);
    }
    return text;
}

Консоль:

6502-03-0029
6300-03-0046
6100-04
6100-02
READ ALSO
Как обновить содержимое JTable?

Как обновить содержимое JTable?

Не получается обновить содержимое JTable при изменении DefaultTableModelОбщая идея такова: создается меню с тремя подпунктами - таблицами из базы данных

134
SQLiteLog: (1) no such table for Android 9

SQLiteLog: (1) no such table for Android 9

Возникла проблема с Android 9Использую "стандартный" класс MyDataBaseOpenHelper extends SQLiteOpenHelper С выходом андроид 9 появилась проблема android

208
Не получается добавить шрифт neris

Не получается добавить шрифт neris

У меня есть вопрос, не могу подключить к верстаемой странице на своем ПК шрифт neris

150