2017-06-08 100 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,但我在這裏把它當作對未來的讀者的替代解決方案。)

相關問題