2017-09-23 6 views

Répondre

0

S'il vous plaît, vérifiez si cela résout votre problème:

package q46379748; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class FindWord { 

    public static void main(String[ ] args) { 
     String input = "This is introductory information of new word search engine"; 

     String query = "in"; 

     String[ ] result = new FindWord().findWords(input, query); 

     for (String s : result) { 
      System.out.println(s); 
     } 
    } 

    private String[ ] findWords(String input, String query) { 
     Pattern p = Pattern.compile("\\b" + query + "\\w*\\b"); 

     Matcher m = p.matcher(input); 

     List<String> v = new ArrayList<>(); 
     while (m.find()) { 
      v.add(m.group()); 
     } 

     return v.toArray(new String[ 0 ]); 
    } 

} 

Notez que cette solution utilise une expression régulière (RegEx) et le motif créé est \bin\w+\b, où:

  • \b moyens de limite de mot
  • \w signifie caractères de mot
  • * signifie zéro ou plus (toute quantité) de l'élément précédent, en l'occurrence le \w

Keep dans l'esprit qu'il serait préférable de changer la requête pour être une requête RegEx:

String query = "\\bin\\w*\\b"; 

Pattern p = Pattern.compile(query); 

Si vous voulez apprendre RegEx, il y a beaucoup de matériel là-bas:

https://regexone.com/

http://www.regular-expressions.info/tutorial.html

http://www.rexegg.com/