也许不是最有效的,但你可以使用正则表达式和replaceFirst
for (int i = 0; i < arr.length; i++)
{
arr[i] = arr[i].replaceFirst("( |\\+).*$","");
}
基本上,它找到空格' '
或加号的第一个实例+
,我们必须用两个转义,\
因为+
它也是正则表达式中的特殊符号,以及它后面的任何其他字符.*
,$
并用空替换它细绳。
如果您需要扩展代码以捕获其他分隔符,例如可能.
,您只需使用另一个运算符将分隔符添加到组中|
:
arr[i] = arr[i].replaceFirst("( |\\+|\\.).*$","");
现在,这将为每个循环编译一个新的正则表达式模式,如果数组中有很多字符串,这绝对不理想。在这种情况下,您可能会考虑先在循环之外编译一个单独的模式:
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中的正则表达式
正则表达式维基百科