2016-06-14 2 views
0

Я рассмотрел здесь еще один ответ, но я действительно не понял, как преобразовать его в свой собственный код. Я пытаюсь найти, где «СТРАНА» находится в фразе так:Поиск позиции слова в строке для java

String word = "COUNTRY"; 
String sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOU COUNTRY"; 

Он должен вывести, что слово находится в 5-й и 17-й позиции.

Большое спасибо

EDIT: я понял, что это тоже нужно игнорировать регистр. Извините за не говорю, что рано

+1

Что вы пробовали? СОВЕТ: разделите строку на массив строк, по одной строке для каждого слова. – NickJ

+0

Регулярное и совпадение и групповая находка должны быть частью вашего мышления. – duffymo

+0

regex и matcher и group будут похожи на попытку научить исчисление перед сложениями и вычитанием. – NickJ

ответ

0

Если вы хотите, чтобы проверить, если строка содержит слово, то вы можете использовать .contains(""); метод, предоставленные строками

String word = "COUNTRY"; 
String sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOU COUNTRY"; 

System.out.println(sentence.contains(word)); 
//will return true; 

Если вы хотите, чтобы найти все слова внутри предложения, то используйте это:

String word = "COUNTRY"; 
String sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOU COUNTRY"; 

if (sentence.contains(word)) { 
    String[] sentenceWords = sentence.split(" "); 

    for (String wordInSentence : sentenceWords) { 
     if (wordInSentence.equals(word)) { 
      System.out.println(wordInSentence); 
     } 
    } 
} 

Или, если вы хотите знать точное местоположение конкретного слова, то попробуйте следующее:

String word = "COUNTRY"; 
String sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOU COUNTRY"; 

if (sentence.contains(word)) { 
    String[] sentenceWords = sentence.split(" "); 

    for (int i = 0; i < sentenceWords.length; i++) { 
     if (sentenceWords[i].equals(word)) { 
      System.out.println(word + " is located as the: " + i + "th string"); 
     } 
    } 
} 

Примечание: Смотрите, что я использую .equals(); на объектах Струнных см this должности для получения дополнительной информации!

EDIT:.

Игнорирование случая вы можете использовать String.equalsIgnoreCase() вместо String.equals()

+1

Спасибо за это, хотя есть способ игнорировать случай на вашем последнем awnser – Darrkwolf

+0

@Darrkwolf см. Edit – Igoranze

1

Вы можете использовать этот кусок кода:

public static void main(String args[]) { 
    String word = "COUNTRY"; 
    String sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOU COUNTRY"; 
    String[] listWord = sentence.split(" "); 
    for (int i = 0; i < listWord.length; i++) { 
     if (listWord[i].equals(word)) { 
      System.out.println(i+1); 
     } 
    } 
} 
+0

Спасибо, хотя есть ли способ игнорировать случай на вашем awnser – Darrkwolf

+0

, что вы имели в виду: есть ли способ игнорировать случай на вашем тент? –

+0

Я имею в виду, есть ли способ, чтобы найти слово, это просто страна, тогда она все равно будет работать – Darrkwolf

0

Лучше использовать эту функцию, присутствующую в java.lang *, то есть в Струнном class.It не является Статическим .. .

int indexOf (String str) Возвращает индекс внутри этой строки первого вхождения указанной подстроки. int indexOf (String str, int fromIndex) Возвращает индекс внутри этой строки первого вхождения указанной подстроки, начиная с указанного индекса.

String s1="Hello I love my country,i belong to my country",s2="country"; 
System.out.println(s1.indexOf(s2)); 
Смежные вопросы