65 Stimmen

Konvertierung einer Satzzeichenfolge in ein String-Array von Wörtern in Java

Ich brauche mein Java-Programm, um eine Zeichenfolge wie zu nehmen:

"This is a sample sentence."

und verwandeln es in ein String-Array wie:

{"this","is","a","sample","sentence"}

Keine Punkte oder Interpunktion (vorzugsweise). Übrigens, die Eingabe der Zeichenkette ist immer ein Satz.

Gibt es eine einfache Möglichkeit, dies zu tun, die ich nicht sehe? Oder müssen wir wirklich viel nach Leerzeichen suchen und neue Zeichenfolgen aus den Bereichen zwischen den Leerzeichen (die Wörter sind) erstellen?

7voto

sofia Punkte 91

Sie können Ihre Zeichenkette einfach wie folgt aufteilen regelmäßig Ausdruck

String l = "sofia, malgré tout aimait : la laitue et le choux !" <br/>
l.split("[[ ]*|[,]*|[\\.]*|[:]*|[/]*|[!]*|[?]*|[+]*]+");

5voto

James Punkte 5277

Die einfachste und beste Antwort, die mir einfällt, ist die Verwendung der folgenden Methode, die für den Java-String definiert ist -

String[] split(String regex)

Und machen Sie einfach "Dies ist ein Beispielsatz".split(" "). Da eine Regex verwendet wird, können Sie auch kompliziertere Aufteilungen vornehmen, bei denen unerwünschte Satzzeichen und andere Zeichen entfernt werden können.

4voto

MatBanik Punkte 25356

Versuchen Sie dies:

String[] stringArray = Pattern.compile("ian").split(
"This is a sample sentence"
.replaceAll("[^\\p{Alnum}]+", "") //this will remove all non alpha numeric chars
);

for (int j=0; i<stringArray .length; j++) {
  System.out.println(i + " \"" + stringArray [j] + "\"");
}

4voto

helloworld922 Punkte 10543

Verwenden Sie string.replace(".", "").replace(",", "").replace("?", "").replace("!","").split(' ') um Ihren Code in ein Array ohne Punkte, Kommas, Fragezeichen oder Ausrufezeichen aufzuteilen. Sie können so viele Replace-Aufrufe hinzufügen/entfernen, wie Sie möchten.

2voto

Sujal Mandal Punkte 893

Ich habe diese Antwort bereits irgendwo gepostet, ich werde es hier noch einmal tun. Diese Version verwendet keine der wichtigsten eingebauten Methoden. Sie haben das char-Array erhalten, wandeln Sie es in einen String um. Hoffentlich hilft das!

import java.util.Scanner;

public class SentenceToWord 
{
    public static int getNumberOfWords(String sentence)
    {
        int counter=0;
        for(int i=0;i<sentence.length();i++)
        {
            if(sentence.charAt(i)==' ')
            counter++;
        }
        return counter+1;
    }

    public static char[] getSubString(String sentence,int start,int end) //method to give substring, replacement of String.substring() 
    {
        int counter=0;
        char charArrayToReturn[]=new char[end-start];
        for(int i=start;i<end;i++)
        {
            charArrayToReturn[counter++]=sentence.charAt(i);
        }
        return charArrayToReturn;
    }

    public static char[][] getWordsFromString(String sentence)
    {
        int wordsCounter=0;
        int spaceIndex=0;
        int length=sentence.length();
        char wordsArray[][]=new char[getNumberOfWords(sentence)][]; 
        for(int i=0;i<length;i++)
        {
            if(sentence.charAt(i)==' ' || i+1==length)
            {
            wordsArray[wordsCounter++]=getSubString(sentence, spaceIndex,i+1); //get each word as substring
            spaceIndex=i+1; //increment space index
            }
        }
        return  wordsArray; //return the 2 dimensional char array
    }

    public static void main(String[] args) 
    {
    System.out.println("Please enter the String");
    Scanner input=new Scanner(System.in);
    String userInput=input.nextLine().trim();
    int numOfWords=getNumberOfWords(userInput);
    char words[][]=new char[numOfWords+1][];
    words=getWordsFromString(userInput);
    System.out.println("Total number of words found in the String is "+(numOfWords));
    for(int i=0;i<numOfWords;i++)
    {
        System.out.println(" ");
        for(int j=0;j<words[i].length;j++)
        {
        System.out.print(words[i][j]);//print out each char one by one
        }
    }
    }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X