Использование метода разделения в java для разделения "Smith, John (111) 123-4567" на "John" "Smith" "111". Мне нужно избавиться от запятой и круглых скобок. Это то, что у меня есть, но это не разбивает струны.

    // split data into tokens separated by spaces
    tokens = data.split(" , \\s ( ) ");
    first = tokens[1];
    last = tokens[0];
    area = tokens[2];


    // display the tokens one per line
    for(int k = 0; k < tokens.length; k++) {

        System.out.print(tokens[1] + " " + tokens[0] + " " + tokens[2]);
    }
0
luisruiz720 13 Мар 2018 в 03:56

2 ответа

Лучший ответ

Также можно решить, используя регулярное выражение для анализа ввода:

String inputString = "Smith, John (111) 123-4567";

String regexPattern = "(?<lastName>.*), (?<firstName>.*) \\((?<cityCode>\\d+)\\).*";
Pattern pattern = Pattern.compile(regexPattern);
Matcher matcher = pattern.matcher(inputString);

if (matcher.matches()) {
      out.printf("%s %s %s", matcher.group("firstName"),
                                        matcher.group("lastName"),
                                        matcher.group("cityCode"));
}

Вывод: John Smith 111

1
Jasper Huzen 14 Мар 2018 в 08:11

Похоже, что функция string.split не умеет разбивать значение параметра на отдельные строки соответствия регулярного выражения.

Если мне неизвестна недокументированная функция функции Java string.split () (документация здесь), ваш параметр функции разделения пытается разбить строку на все значение", \\ s () ", которое не буквально присутствует в строке операнда.

Я не могу проверить ваш код в среде выполнения Java, чтобы ответить, но я думаю, вам нужно разделить операцию разделения на отдельные операции разделения, например:

data = "Last, First (111) 123-4567";
tokens = data.split(","); 
//tokens variable should now have two strings:
//"Last", and "First (111) 123-4567"
last = tokens[0];
tokens = tokens[1].split(" ");
//tokens variable should now have three strings:
//"First", "(111)", and "123-4567"
first = tokens[0];
area = tokens[1];
0
stackuser83 13 Мар 2018 в 20:29