如何在java中找到第一次出现的空格(tab+space+etc)?

Hum*_*mus -1 java

所以我有这样的事情

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]。字符串以该数字开头,并在数字结尾后有一个空格或制表符

Gho*_*ica 5

重点是: 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)