我有一个string
,我希望获得第一个逗号,空格或句号。
int word = title.indexOf(" ", idx);
这将获得第一个空间,我怎样才能从空间,逗号或句号中获取第一个空格?
我尝试使用||
但没有用。
离。
int word = title.indexOf(" " || "," || ".", idx);
答案 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 )