Возможно, не самый эффективный, но вы можете использовать регулярные выражения и replaceFirst
for (int i = 0; i < arr.length; i++)
{
arr[i] = arr[i].replaceFirst("( |\\+).*$","");
}
По сути, он находит первый экземпляр либо пробела ' '
, либо знака плюс +
, который мы должны были экранировать с двумя \
, поскольку +
также является специальным символом в регулярных выражениях наряду с другие символы, следующие за ним .*
до конца $
, и заменяют его пустой строкой.
Если вам нужно было расширить код для перехвата других разделителей, например, возможно .
, вы просто добавляете разделитель в группу с помощью другого оператора |
:
arr[i] = arr[i].replaceFirst("( |\\+|\\.).*$","");
Теперь это скомпилирует новое регулярное выражение Pattern каждого цикла, что определенно не идеально, если в вашем массиве много строк. В этом случае вы можете сначала скомпилировать отдельный шаблон вне цикла:
Pattern pattern = Pattern.compile("( |\\+).*$");
for (int i = 0; i < arr.length; i++)
{
arr[i] = pattern.matcher(arr[i]).replaceFirst("");
}
Если вы захотите потом части, используйте следующее регулярное выражение:
for (int i = 0; i < arr.length; i++)
{
arr[i] = arr[i].replaceFirst("^.*( |\\+)\\s*","");
}
Обратите внимание, это необходимо изменить, если вы все еще хотите захватить "5000" для "5000+".
Может быть стоит создать отдельное универсальное регулярное выражение, которое использует "\ d +" для поиска чисел, например:
^(\\d+).*((\\d+)?)$
Тогда вам нужно использовать Matcher и Matcher.group , чтобы выбрать конкретные числа.
Ссылки по теме :
Строка документации
Образец документации
Соответствующая документация
Регулярные выражения в Java
Википедия по регулярным выражениям