我有一些代码:
firstWord = sentance.substring (0, sentance.indexOf(' '));
secondWord = sentance.substring(sentance.indexOf(' ') + 1);
代码用于在不使用数组的情况下从字符串中选择第一个单词。 但是我想知道我是否可以通过实施安全措施来进一步愚弄我的代码,这样如果用户输入两个空格,代码将占用一组空格并将其计为一个单位。
这可以在不使用数组或循环的情况下实现吗?
例如,用户会输入: “你好 2个空间那里” 用户在开始时意外地输入了两个空格,当它试图取出我认为的第二个单词时会弄乱程序。
答案 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()