2013-11-24 84 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) 
相关问题