我试图打破一个非常简单的字符串集合
0|0
10|15
30|55
Run Code Online (Sandbox Code Playgroud)
等等基本上由管道分开的数字.
当我使用java的字符串拆分函数与.split("|").我得到了一些不可预知的结果.在第一个插槽中的空白区域,有时数字本身并不是我认为应该的位置.
任何人都可以帮助并给我建议如何使用reg exp来保持整数?
我被要求提供代码尝试进行实际拆分.所以请允许我这样做,希望进一步澄清我的问题:)
String temp = "0|0";
String splitString = temp.split("|");
Run Code Online (Sandbox Code Playgroud)
结果
\n
0
|
0
Run Code Online (Sandbox Code Playgroud)
我想要得到
0
0
Run Code Online (Sandbox Code Playgroud)
只要.永远感激任何提前帮助:)
我仍然建议使用split(),它默认跳过空标记.你想摆脱字符串中的非数字字符,只保留管道和数字,然后你可以轻松地使用split()你想要的东西.或者您可以传递多个分隔符(以正则表达式的形式),这应该工作:
String[] splited = yourString.split("[\\|\\s]+");
Run Code Online (Sandbox Code Playgroud)
和正则表达式:
import java.util.regex.*;
Pattern pattern = Pattern.compile("\\d+(?=([\\|\\s\\r\\n]))");
Matcher matcher = pattern.matcher(yourString);
while (matcher.find()) {
System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)
管道符号在正则表达式中是特殊的(它标记替代品),您需要将其转义.根据您使用的Java版本,这可以很好地解释您的不可预测的结果.
class t {
public static void main(String[]_)
{
String temp = "0|0";
String[] splitString = temp.split("\\|");
for (int i=0; i<splitString.length; i++)
System.out.println("splitString["+i+"] is " + splitString[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
输出
splitString[0] is 0
splitString[1] is 0
Run Code Online (Sandbox Code Playgroud)
请注意,一个反斜杠是regexp转义字符,但由于反斜杠也是java源代码中的转义字符,因此需要其中两个将反斜杠推入正则表达式.
| 归档时间: |
|
| 查看次数: |
35229 次 |
| 最近记录: |