2011-05-17 76 views
1

有没有一种方法可以在Java中使用indexOf来在单个解析中查找给定文本中多个字符串的位置?Java indexOf一次传递多个字符串

例如, 我想在文本的单个解析中为“you”和“meeting”做一个indexOf “今天你能参加会议吗?”

任何帮助将不胜感激!在此先感谢

+0

和,这将是在一个单一的解析答案吗?一个正则表达式(比如“你。*会议”)是否足够好,表示表达式开始的位置以及结束的位置 – amit 2011-05-17 21:56:53

+1

这个问题不明确。你想要每个字符串的位置(返回一个列表/数组的位置)还是任何字符串的第一次出现的位置?此外,什么构成“通行证”?通过字符串传递的文本? – 2011-05-18 00:11:01

回答

3

正如你所说的问题:不。

但是,您可以使用带匹配的正则表达式string.matches(“。*(meeting | today)。*”)。有关正则表达式的语法,请参阅javadoc。如果您只使用字母和数字 您可以从示例中构造模式,但某些字符需要用\引用,这在像这样的文字中会变成\。

2

如果您在文本中搜索某些模式,请使用正则表达式。 在你的情况,我会写一个基本功能,如果你想找到一个文本一些字符串给出:

public static void main(String ... args) { 
    String a = "i have a little dog"; 
    String [] b = new String [] { "have", "dog" }; 
    locateStrings(a,b); 
} 

public static int [] locateStrings(String source, String [] str) { 
    if (source == null || str == null || str.length == 0) 
     throw new IllegalArgumentException(); 
    int [] result = new int [str.length]; 
    for (int i = 0; i < str.length ; i++) { 
     result[i] = source.indexOf(str[i]); 
    } 
    return result;  
}