需要有关.indexOf()的使用建议;

时间:2014-10-22 05:02:38

标签: java

我有一些代码:

firstWord = sentance.substring (0, sentance.indexOf(' '));
secondWord = sentance.substring(sentance.indexOf(' ') + 1);

代码用于在不使用数组的情况下从字符串中选择第一个单词。 但是我想知道我是否可以通过实施安全措施来进一步愚弄我的代码,这样如果用户输入两个空格,代码将占用一组空格并将其计为一个单位。

这可以在不使用数组或循环的情况下实现吗?

例如,用户会输入: “你好 2个空间那里” 用户在开始时意外地输入了两个空格,当它试图取出我认为的第二个单词时会弄乱程序。

6 个答案:

答案 0 :(得分:4)

使用单个空格删除多个空格:

String str="Hello                  world this         is   string";
str=str.replaceAll("\\s+", " ");
.......// do whatever you want

答案 1 :(得分:0)

如果字符串的第一个字符是空格,或者第一个空格不是单词,或者没有空格,例如" hello" -> "", "!@#! blah" -> "!@#!", "asdasd" -> "" <,则代码不会从字符串中取出第一个单词/ p>

答案 2 :(得分:0)

y.indexOf(x)返回x中第一次出现y的索引。

你的解决方案大多是万无一失的,但如果前面有空格,或者指定的字符串中没有空格,它将无法获得第一个单词,因为indexOf将返回-1。< / p>

您应该在要获取第一个单词的字符串对象上调用.trim()方法,它将删除字符串周围的空格,然后在字符串末尾添加一个空格字符。 / p>

答案 3 :(得分:0)

str = "Hello I'm your String";
String[] splited = str.split("\\s+");

你可以使用它们并不那么糟糕的数组。

答案 4 :(得分:0)

如果确实必须避免使用数组,则可以先使用sentance.replaceAll("\\s+", " ");将连续空格的所有序列折叠为单个空格。

(同样,你也希望trim()领先和尾随空格。)

答案 5 :(得分:0)

如果您只想删除尾随和前导空格,请使用.trim()

str = str.trim()