Разделить () - в Java - PullRequest
       14

Разделить () - в Java

1 голос
/ 21 октября 2011

Допустим, у меня есть:

String string1 = "123,234,345,456,567*nonImportantData";
String[] stringArray = string1.split(", ");

String[] lastPart = stringArray[stringArray.length-1].split("*");
stringArray[stringArray.length-1] = lastPart[0];

Есть ли более простой способ заставить этот код работать? Моя цель состоит в том, чтобы разделить все числа независимо от того, содержит ли stringArray nonImportantData или нет. Должен ли я использовать метод подстроки?

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

На самом деле аргумент метода String.split (...) является не строкой-разделителем, а регулярным выражением.

Вы можете использовать

String[] splitStr = string1.split(",|\\*");

где | является регулярным выражением ИЛИ и \\ используется для экранирования *, поскольку это специальный оператор в регулярном выражении. Ваше разделение ("*") фактически вызовет исключение java.util.regex.PatternSyntaxException.

1 голос
/ 21 октября 2011

Предполагая, что у вас всегда есть формат, который вы указали ....

String input = "123,234,345,456,567*nonImportantData";
String[] numbers = input.split("\\*")[0].split(",");
1 голос
/ 21 октября 2011

Я бы, вероятно, удалил неважные данные перед разбиением строки.

int idx = string1.indexOf('*');
if (idx >= 0)
  string1 = string1.substring(0, idx);
String[] arr = string1.split(", ");

Если '*' присутствует всегда, вы можете сократить его следующим образом:

String[] arr = str.substring(0, str.indexOf('*')).split(", ");

Это отличается от подхода MarianP , поскольку «неважные данные» не сохраняются как элемент массива. Это может или не может быть полезно, в зависимости от вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...