2012-06-19 5 views
2

Comment puis-je diviser une phrase comme "He and his brother playing football." en quelques parties comme "He and", "and his", "his brother", "brother playing" et "playing football". Est-il possible de le faire en utilisant Java?Comment diviser une phrase en parties Java?

+0

Alors que nous sommes, que voulez-vous dire précisément en divisant une phrase en (a) « peu partie »? Quelles parties? – duskwuff

+3

Le mot magique est délimiteur! – theAlse

+0

J'ai essayé d'utiliser des délimiteurs. Mais je ne peux pas faire pour diviser la phrase comme ci-dessus. – cchua

Répondre

7

En supposant que les "mots" sont toujours séparés par un seul espace. Utilisez String.split()

String[] words = "He and his brother playing football.".split("\\s+"); 
for (int i = 0, l = words.length; i + 1 < l; i++) 
     System.out.println(words[i] + " " + words[i + 1]); 
+0

merci, ça marche. Et j'ai encore 1 problème, je peux diviser les phrases en "He", "He et", "et son", "son frère", "frère jouant" et "jouant au football". Je veux obtenir le premier mot puis suivre par d'autres. – cchua

+0

@cchua, Donc, il suffit d'avoir 'words [0]' avant la boucle. – st0le

+0

ok je comprends. Que diriez-vous du "." après le "" football "" – cchua

2
String str="He and his brother playing football"; 

    String [] strArray=str.split(" "); 
    for(int i=0;i<strArray.length-1 ;i++) 
    { 
     System.out.println(strArray[i]+" "+strArray[i+1]); 
    } 
+0

merci est fonctionne. Et j'ai encore 1 problème, je peux diviser les phrases en "He", "He et", "et son", "son frère", "frère qui joue", "jouer au football" et "football". – cchua

0

Utiliser un StringTokenizer pour séparer par des espaces ou d'autres caractères.

import java.util.StringTokenizer; 

public class Test { 

     private static String[] tokenize(String str) { 
      StringTokenizer tokenizer = new StringTokenizer(str); 
     String[] arr = new String[tokenizer.countTokens()]; 
     int i = 0; 
     while (tokenizer.hasMoreTokens()) { 
     arr[i++] = tokenizer.nextToken(); 
     } 
     return arr; 
    } 

    public static void main(String[] args) { 
     String[] strs = tokenize("Sandy sells seashells by the sea shore."); 
     for (String s : strs) 
      System.out.println(s); 
    } 
} 

devrait imprimer:

Sandy

vend

seashells

par

les

s ea

rive.

Peut être ou ne pas être ce que vous recherchez.

+0

Je ne comprends pas, pouvez-vous me donner un exemple complet pour l'exécuter. – cchua

+0

@cchua Essayez cela. Il divisera par _spaces_ cependant, pas comme dans la parole. Qu'est-ce que vous essayez de faire avec ça? – iracigt

+0

La chose est que je dois le diviser en 2 mots comme ci-dessus. Plus tard je penserai à un moyen de faire une comparaison avec 2 mots qui est indiqué dans un fichier texte. À l'intérieur du fichier texte contiennent de nombreuses lignes de phrases. – cchua

3

Vous pouvez le faire en utilisant BreakIterator class et sa méthode statique getSentenceInstance(). Il Returns a new BreakIterator instance for sentence breaks for the default locale.

You can also use getWordInstance(), getLineInstance().. to break words, line...etc

par exemple:

BreakIterator boundary = BreakIterator.getSentenceInstance(); 

boundary.setText("Your_Sentence"); 

int start = boundary.first(); 

int end = boundary.next(); 

Iterate over it... to get the Sentences....

Pour plus de détails voir sur ce lien:

http://docs.oracle.com/javase/6/docs/api/java/text/BreakIterator.html

Edité réponse: This is a working code

String sent = "My name is vivek. I work in TaxSmart"; 
     BreakIterator bi = BreakIterator.getSentenceInstance(); 
     bi.setText(sent); 
     int index = 0; 
     while (bi.next() != BreakIterator.DONE) { 
     String sentence = sent.substring(index, bi.current()); 
     System.out.println("Sentence: " + sentence); 
     index = bi.current(); 
     } 
+0

Je ne comprends pas, pouvez-vous me donner un exemple complet pour l'exécuter. – cchua

+0

Intéressant, d'abord entendre parler de cette classe 'BreakIterator'. Je viens de tester, le résultat contient des espaces. par exemple, pour 'Comment vas-tu? ', j'ai eu' 0,3 [comment] 3,4 [] 4,7 [sont] 7,8 [] 8,11 [vous] 11,12 [?] ' –

+0

@ LiuYan 研 研 cela vous dérange partager votre code ici. – cchua

Questions connexes