Android会在字符串中获取附近的逗号,空格或句点

时间:2013-11-24 18:40:06

标签: java android string

我有一个string,我希望获得第一个逗号,空格或句号。

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

这将获得第一个空间,我怎样才能从空间,逗号或句号中获取第一个空格? 我尝试使用||但没有用。

离。

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

3 个答案:

答案 0 :(得分:4)

获取空格,逗号或点的第一个出现的索引,如果找不到它们,则返回-1:

Pattern pattern = Pattern.compile("[ ,\\.]");
Matcher matcher = pattern.matcher(title);
int index = matcher.find() ? matcher.start() : -1;

请注意,您可以预先编译模式并根据需要重复使用。

另见http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

另请注意,如果您想将文字分成单个单词,则可以/应该使用BreakIterator代替!

答案 1 :(得分: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;
}

答案 2 :(得分:1)

很遗憾,您无法使用indexOf字符数组,而是需要拨打indexOf三次,或者您可以匹配regex,您提供的代码无效java语法。此符号||是一个条件OR运算符,可用于执行布尔运算,如

if(x || y )