所以我有这样的事情
System.out.println(some_string.indexOf("\\s+"));
Run Code Online (Sandbox Code Playgroud)
这给了我 -1
但是当我使用诸如 \t 或 space 之类的特定值时
System.out.println(some_string.indexOf("\t"));
Run Code Online (Sandbox Code Playgroud)
我得到了正确的索引。
有什么方法可以在不使用 split 的情况下获得第一次出现空格的索引,因为我的字符串很长。
PS - 如果有帮助,这是我的要求。我想要字符串中的第一个数字,它通过制表符或空格与字符串的其余部分分开,并且我试图避免 split("\\s+")[0]。字符串以该数字开头,并在数字结尾后有一个空格或制表符
重点是: indexOf() 需要一个char,或一个字符串;但不是正则表达式。
因此:
String input = "a\tb";
System.out.println(input);
System.out.println(input.indexOf('\t'));
Run Code Online (Sandbox Code Playgroud)
打印 1,因为索引 1 处有一个 TAB 字符。
System.out.println(input.indexOf("\\s+"));
Run Code Online (Sandbox Code Playgroud)
打印 -1,因为\\s+您的输入值中没有子字符串。
换句话说:如果你想使用正则表达式的力量,你不能使用 indexOf()。例如,您更倾向于使用String.match()。但当然 - 这给出了一个布尔结果;不是索引。
如果您打算查找第一个空格的索引,则必须手动迭代字符,例如:
for (int index = 0; index < input.length(); index++) {
if (Character.isWhitespace(input.charAt(index))) {
return index;
}
}
return -1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6428 次 |
| 最近记录: |