2017-06-08 75 views

回答

2

假设字符串的开头没有空格。 请按照下列步骤操作 -

  1. 拆分字符串的空格。它会创建一个数组。
  2. 获取该数组的第一个元素。

希望这会有所帮助。

str = "Example string" 
String[] _arr = str.split("\\s"); 
String word = _arr[0]; 

在开始考虑上述代码之前,您需要在开始时考虑多个空格和空格。

我不是原生的JAVA编程,但有一个想法,它有字符串分裂功能。 而你在问题中引用的参考文献有点复杂,而你可以很容易地达到想要的结果。

P.S.未来,如果你想要得到两个或三个字,分裂方法会更好(假设你已经处理了多个空格),否则子字符串会更好。

2
// Taking 'str' as your string 
// To remove the first space(s) of the string, 
str = str.trim(); 
int index = str.indexOf(" "); 
String word = str.substring(0, index); 

这只是许多方法之一。

str = str.replaceAll("\\s+", " "); // This replaces one or more spaces with one space 
String[] words = str.split("\\s"); 
String first = words[0]; 
2

可以使用replaceAll用正则表达式\s.*每一件事空间匹配后其中:

String str = "Hello java word!"; 
str = str.replaceAll("\\s.*", ""); 

输出

Hello 

regex demo


像@Coffeehouse编码器在评论中提到,如果输入以空格开始,此解决方案将取代所有的东西,所以如果您想避免这种情况,您可以使用string.trim()修剪输入,以便它可以删除开始和结束处的空格结束。

+1

不要忘记修剪字符串。 –

+0

@CoffeehouseCoder不需要,因为空间也将被替换:) –

+1

如果有的话,在起始处的空间呢? –

1

在我看来,最简单的解决方案是找到用户希望将其切断的索引,然后从0到他们想要的索引调用substring()方法。将那个=设置为一个新的字符串,你有他们想要的字符串。

如果要替换字符串,只需将原始字符串=设置为substring()方法的结果即可。

链接子()方法:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int,%20int)

+0

找到子字符串,然后获取子字符串?这种方法可能比分裂更快。 –

+0

我认为应该是。它几乎不需要解析能量并使用一种方法。分裂需要更多的时间和空间。 – RostSunshine

+0

拆分将有助于在需要的情况下获取两个单词。所以分割比你现在的方法更灵活。 –

2

一个简单的方法做到这一点可能是:

System.out.println("Hello world!".split(" ")[0]); 
+0

智能和懒惰的方式...程序员的方式... –

0

已经有5个完美的答案,所以我要补充的第六个。变化是生活的调味品!

private static final Pattern FIRST_WORD = Pattern.compile("\\S+"); 

public static String firstWord(CharSequence text) { 
    Matcher m = FIRST_WORD.matcher(text); 
    return m.find() ? m.group() : ""; 
} 

优势在.split(...)[0]型答案:

  1. 它直接不正是被要求,即“找到非空格字符的第一个序列。”所以自我文档更加明确。

  2. 由于正则表达式只编译一次,因此在多个字符串上调用时(例如,批量处理大量字符串)效率更高。

  3. 它更节省空间,因为它避免了在我们只需要第一个时就不必要地创建一个引用每个单词的整个数组。

  4. 它不需要修剪字符串。

(我知道这可能是太晚而没有任何用途的OP,但我在这里把它当作对未来的读者的替代解决方案。)

相关问题