2013-11-24 110 views
-1

我有一個string,我想獲取它的第一個逗號,空格或句點。Android獲取字符串中的逗號,空格或句點

  int word = title.indexOf(" ", idx); 

這會得到第一個空間,我怎樣才能讓它從空間,逗號或句點中獲得第一個東西? 我嘗試過使用||,但沒有奏效。

ex。

  int word = title.indexOf(" " || "," || ".", idx); 

回答

4

獲取空格,逗號或點或第一次出現的索引;如果沒有人可以發現:

​​

注意,您可以預編譯該模式並按需要重複使用它。

又見http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

還要注意的是,如果你想打破文本爲單個單詞,你可以/應該使用BreakIterator代替!

+0

它是好的,但它找到最近的空間等問題,從字符串的開始,我如何使它從一個特定的開始(如從字符串的字符4)? –

+0

如果你想從索引n開始,只需調用matcher.find(n)。 – isnot2bad

+0

還有一件事,分隔符是什麼?我無法得到它。它是\\? 喜歡如果我想添加新的東西將如何?如何添加x? –

1

你在做什麼不是有效的Java語法。用空格,逗號和句點使用indexOf()方法,然後確定這3個值中最小的一個。

int a = title.indexOf(" ", idx); 
int b = title.indexof(",", idx); 
int c = title.indexOf(".", idx); 

然後只是確定哪個是最小的。

更快的方法是編寫自己的方法。在幕後,indexOf只會遍歷所有字符。你可以做你自己手動

public static int findFirstOccurrence(String s) { 
    for (int i = 0; i < s.length(); i++) { 
     if (s.charAt(i) == ',' || // period/space) { 
      return i; 
     } 
    } 
    return -1; 
} 
+0

我從該行得到錯誤的布爾運算:如果(s.charAt(I)==「」 || //期/空間){ –

+0

你不能只複製粘貼我的代碼而不閱讀它。我通過不寫出所有條件來節省時間/空間,而是用評論替換它。 – Kon

1

不幸的是,你不能使用的字符數組indexOf,而不是你需要調用indexOf三次,或者你可以匹配regex,你所提供的代碼是無效的Java語法。這個符號||是有條件OR操作,你可以用它來執行像

if(x || y) 
相關問題