-6

我想使用java查找输入字符串中特定单词的位置。我不想使用正则表达式。例如,如果我的输入字符串是“Rama Raman Rama”,如果我想找到 Rama,那么它应该给我索引号 0 和 11 作为输出。我的代码在我不想要的所有三个单词中都找到了 Rama。一些帮助?

4

5 回答 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

您可以使用类PatternMatcher. 当您尝试查找单词“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 回答