是否存在C ++的“std :: string :: find_first_of”的Java等价物?
string string1( "This is a test string!");
int location = string1.find_first_of( "aeiou" );
//location is now "2" (the position of "i")
实现同样功能的最简单方法是什么?
编辑:建议的解决方案也必须适用于Android。
答案 0 :(得分:11)
最佳匹配可能是IndexOfAny
method in StringUtils
实施例
int index = StringUtils.indexOfAny("This is a test string!", "aeiou");
答案 1 :(得分:8)
不使用外部库:
String string = "This is a test string!";
String letters = "aeiou";
Pattern pattern = Pattern.compile("[" + letters + "]");
Matcher matcher = pattern.matcher(string);
int position = -1;
if (matcher.find()) {
position = matcher.start();
}
System.out.println(position); // prints 2
答案 2 :(得分:5)
不是最有效但最简单的:
String s = "This is a test string!";
String find = "[aeiou]";
String[] tokens = s.split(find);
int index = tokens.length > 1 ? tokens[0].length() : -1; //-1 if not found
注意:find
字符串不得包含任何保留的正则表达式字符,例如.*[]
等。
答案 3 :(得分:5)
使用Guava:
CharMatcher.anyOf("aeiou").indexIn("This is a test string!");
(CharMatcher
允许您比Apache StringUtils
替代方案更灵活地操作字符类,例如提供CharMatcher.DIGIT
和CharMatcher.WHITESPACE
等常量,让您补充,联合,相交等人物类......)
答案 4 :(得分:1)
使用StringUtils.indexOfAny,这里有一个链接http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html