Aufteilen eines Strings mit der Split-Methode in Java

Arrays werden häufig in Computerprogrammen verwendet, man kann sagen, dass fast alle Programme Arrays unterschiedlichen Typs enthalten. Strukturen. Die einfachste ist die  Struktur  zusammenhängend  von denen alle Operationen mit Ausnahme der Addition nacheinander ausgeführt werden. Das  Entfernung  wird mit a  Zugang  Direkt, aber auf  muss  Machen Sie die  Versatz  other elements.
Das Zählen von Wörtern in einem Kanal  character impliziert die Suche nach dem "Leerzeichen". Java macht es uns leichter und hier bemerken wir den Vorteil von objektorientiert, es gibt eine Funktion  Vordefiniert  split, divide auf Englisch.

Die Methode split verwendet einen regulären Ausdruck als Eingabe. es teilt diese Kanal  gemäß dem angegebenen regulären Ausdruck und gibt ein Array zurück , die Teilstrings enthält. Wenn der Ausdruck nicht mit dem übereinstimmt  Kanal  Das resultierende Array hat nur ein Element.


Wenn wir die  Kanal  Nächster: I.am.a.programmierer getrennt durch  dots, Wir sollten split("\\." ) und nicht (split("." ) false ). Ganz einfach, weil wir gesagt haben, dass die Split-Methode reguläre Ausdrücke als Eingabe verwendet. Wenn Sie keine Kenntnisse haben, schauen Sie einfach im Internet nach. Ich gebe Ihnen den Link direkt: 


Reguläre Ausdrücke in Java mit Regex

In unserem Beispiel brauchen wir keine großen Dinge. Wir wollen die Anzahl der Wörter durch eins getrennt zählen" Weltraum"  in a  Kanal  von Charakteren. Es existiert  Zwei Möglichkeiten, dies zu erreichen:

1- mit der Funktion split

Die Methode split nimmt die Eingabe an  Zeichenfolge, die verarbeitet und ausgegeben werden soll, muss zurückgegeben werden  Wortanzahl:

int  numberwords(Saite  string)

Wir erklären ein Gemälde  String[] Wörter;   , um Teilzeichenfolgen zu speichern. Letzteres empfängt die von split:

words=string.split(" ");

Geben Sie abschließend die Länge der Tabellenwörter zurück:

Rückkehr  mots.length;

2- Ohne  Die Datei split

Diese Methode scheint länger zu sein, ist es aber nicht notwendig  Da Java bereits über die vordefinierte Split-Funktion verfügt. Dies ist ein Plus für diejenigen, die  Möchte Zug.

Wir deklarieren einen Wortzähler und ein Zeichen.


int  n=0;
Zeichen  c;

Dann lesen wir alle Zeichen der  Kanal  und wir testen, ob einer von ihnen ist ein Leerzeichen, ohne die Leerzeichen am Anfang und Ende des Satzes zu zählen. Wenn ja, erhöhen Sie den Zähler.


for(int  i = 0; Ich < string.length(); i++){
    c = chain.charAt(i);
      if(i!=0 & & i!=string.length()-1)
        if(c==' ')
    n++;
}

Schließlich ist der Zähler gleich 0, wenn die  Kanal  input ist leer und gleich 1  wenn  Der Ausdruck entspricht nicht dem  Kanal  searched.

Wenn es so ist  Überlegen  bis 1 bedeutet, dass mindestens ein Leerzeichen vorhanden ist.

if(n> 1)
  n++;

Beispiel

" Ich bin Programmierer "
Wir addieren 1, weil wir die Leerzeichen dazwischen zählen. Die Wörter( zwischen je zwei Wörtern ein Leerzeichen).

public class WordNumberString {

//mit der vordefinierten Funktion split
static int numberwords(String string){
int n=0;
String[]-Wörter;
//split teilt den String in einen Satz von Wörtern auf
//wenn ein Leerzeichen vorhanden ist, und fügt sie in ein Array ein
words = string.split(" ");
gibt Wörter zurück.length;
}

//ohne die vordefinierte Funktion split
static int nombremots_naive(String string){
int n=0;
char c;
//Durchsuchen Sie die gesamte Zeichenfolge
for(int i = 0 ; i < string.length() ; i++){
//Zeichen für Zeichen
c = string.charAt(i);
//Vermeiden Sie das Zählen von Leerzeichen
//am Anfang und am Ende
//Beispiel: "Ich bin Programmierer"
//Wenn wir diesen Test entfernen, beträgt die Anzahl der Wörter
//6, obwohl wir 4 Wörter haben.
if(i!=0 & & i!=string.length()-1)
if(c==' ')
n++;
}
//wenn die Zeichenfolge nicht leer ist
//wir addieren 1, weil wir
//zählen die Leerzeichen zwischen
//die Wörter, d.h. wenn wir 3 Leerzeichen haben
//dann haben wir 4 Wörter
if(n> 1)
n++;
return n;
}

public static void main(String[] args) {
String string="Ich bin Programmierer";
System.out.println(nombremots_naive(Zeichenfolge));
}
}