web-gelistirme-sc.com

Dizeyi bireysel kelimelere bölme Java

Büyük bir dizginin daha küçük dizgilere veya kelimelere nasıl bölüneceğini bilmek istiyorum .. Örneğin:

Köpeğimi yürümek istiyorum.

Bir dizgeye sahip olmak istiyorum: "I", Başka bir dize: "want", etc.

Bunu nasıl yaparım?

36
fosho

split() yöntemini kullanın

Örneğin:

String s = "I want to walk my dog";
String[] arr = s.split(" ");    

for ( String ss : arr) {
    System.out.println(ss);
}
65

Daha genel bir çözüm olarak (ancak yalnızca ASCII!), Sözcükler arasına diğer virgül ayraçlarını (virgül ve noktalı virgül gibi) eklemek için:

String s = "I want to walk my dog, cat, and tarantula; maybe even my tortoise.";
String[] words = s.split("\\W+");

Düzenli ifade, sınırlandırıcıların en az bir [+] içeren gruplar halinde bir Word [\ W] olmayan bir şey olacağı anlamına gelir. [+] Açgözlü olduğu için, örneğin ';' ve '' bir sınırlayıcı olarak birlikte.

48
Anton Teodor

Bir ifade, kelimeleri bölmek için de kullanılabilir. 

\w, Word karakterlerini ([A-Za-z0-9_]) eşleştirmek için kullanılabilir; böylece noktalama, sonuçlardan kaldırılır:

String s = "I want to walk my dog, and why not?";
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
    System.out.println(matcher.group());
}

Çıktılar:

I
want
to
walk
my
dog
and
why
not

Desen için Java API belgelerine bakın

24
Pete

Bkz. diğer cevabım cümleniz vurgulanan karakterler içeriyorsa:

String[] listeMots = phrase.split("\\P{L}+");
8
Pierre C

StringTokenizer : kullanarak bir başka yöntem

String s = "I want to walk my dog";
StringTokenizer tokenizer = new StringTokenizer(s);

while(tokenizer.hasMoreTokens()) {
    System.out.println(tokenizer.nextToken());
}
3
Kao

String sınıfının split(" ") yöntemini kullanabilir ve her Word'ü aşağıda verilen kod olarak alabilirsiniz:

String s = "I want to walk my dog";
String []strArray=s.split(" ");
for(int i=0; i<strArray.length;i++) {
     System.out.println(strArray[i]);
}
2
AKT

Kullanım split()

String words[] = stringInstance.split(" ");
1
Jigar Joshi

Kelimeler arasına herhangi bir ayırıcı eklemek için (küçük harf ve büyük harf hariç her şey gibi) şunları yapabiliriz:

String mystring = "hi, there,hi Leo";
String[] arr = mystring.split("[^a-zA-Z]+");
for(int i = 0; i < arr.length; i += 1)
{
     System.out.println(arr[i]);
}

Burada regex, ayırıcıların en az bir [+] grup halinde büyük veya küçük harf [^a-zA-Z] olmayan bir şey olacağı anlamına gelir.

1
Akib Imtiaz

apache commons 'StringUtils sınıfını kullanabilirsiniz

    String[] partsOfString = StringUtils.split("I want to walk my dog",StringUtils.SPACE)
0
Gagan Chouhan