我想使用java查找输入字符串中特定单词的位置。我不想使用正则表达式。例如,如果我的输入字符串是“Rama Raman Rama”,如果我想找到 Rama,那么它应该给我索引号 0 和 11 作为输出。我的代码在我不想要的所有三个单词中都找到了 Rama。一些帮助?
问问题
128 次
5 回答
3
这是您的解决方案:
int index=0,j=0;
String name="RAMA RAMAN RAMA";
String[] names = name.split(" ");
for(int i=0;i<names.length;i++){
if(names[i].equals("RAMA")){
if(i!=0){
while(j<i){
index += names[j++].length();
}
}
index += i;
System.out.println("Your match is at : "+index);
}
}
于 2013-09-10T08:00:53.113 回答
0
只需使用 indexOf() 方法。此方法将通过返回单词的索引让您知道单词是否在文本中,否则将返回 -1 表示未找到单词。
String str = "世界很美";
str.indexOf("美丽"); // 这将返回值 9,因为漂亮的单词从索引 9 开始
相似地
str.indexOf("美丽"); // 它将返回 -1,因为文本中不存在该单词
于 2013-09-10T08:21:46.790 回答
0
你可以试试这个
String str="Rama Raman Rama";
String[] arr=str.split(" "); // split and grab word to array
int length=0;
for(String i:arr){
if("Rama".equals(i)){
System.out.println("Index: "+length);
}
length=length+i.length()+1;// keep length count here
}
于 2013-09-10T08:10:22.290 回答
0
您可以使用类Pattern
和Matcher
. 当您尝试查找单词“alpha”时的示例:
String s = "alpha beta alpha anything";
Pattern p = Pattern.compile("alpha");
Matcher m = p.matcher(s);
while (m.find())
System.out.println(m.start());
它打印:0、11
于 2013-09-10T08:10:26.213 回答
0
String name = "RAMA RAMA RAMA";
int position = name.indexOf("RAMA");
//这为您提供了“RAMA”的第一个位置。如果您希望每次出现的每个索引都使用这个:
int start = 0;
int end = 0;
while((start = name.indexOf("RAMA", end) != -1){
int position = start;
end = start;
}
于 2013-09-10T08:08:38.490 回答