Sınırlayıcı olarak herhangi bir boşluk karakteri içeren bir dizeyi nasıl bölerim?

Bir Dizeyi tüm boşluk karakterlerini (' ', '\t', '\n', vb.) sınırlayıcı olarak kullanarak bir alt dizeler Dizisine bölmek için java.lang.String.split() yöntemine hangi regex desenini geçirmem gerekir?

Çözüm

Şöyle bir şey.

myString.split("\\s+");

Bu, tüm beyaz boşlukları bir sınırlayıcı olarak gruplandırır.

Yani eğer dizgim varsa:

"Merhaba[boşluk][tab]Dünya"

Bu, "Hello" ve "World" dizelerini vermeli ve [space] ile [tab] arasındaki boşluğu atlamalıdır.

VonC'nin de belirttiği gibi, ters bölü işaretinin kaçması gerekir, çünkü Java önce dizeyi özel bir karaktere kaçmaya çalışacak ve ayrıştırılmak üzere that gönderecektir. İstediğiniz şey, gerçek "\s", yani "\\s" geçmeniz gerekir. Bu biraz kafa karıştırıcı olabilir.

\\s, [ \\t\\n\\x0B\\f\\r] ile eşdeğerdir.

Yorumlar (4)

Çoğu regex lehçesinde bu tür şeyler için kullanabileceğiniz bir dizi uygun karakter özeti vardır - bunları hatırlamak iyidir:

\w - Herhangi bir sözcük karakteriyle eşleşir.

\W - Kelime olmayan herhangi bir karakterle eşleşir.

\s - Herhangi bir beyaz boşluk karakteriyle eşleşir.

\S - Beyaz boşluk karakterleri dışındaki her şeyle eşleşir.

\d - Herhangi bir rakamla eşleşir.

\D - Rakamlar hariç her şeyle eşleşir.

"Regex Cheatsheets" için yapacağınız bir arama sizi pek çok faydalı özetle ödüllendirecektir.

Yorumlar (4)

"\\s+" işinizi görecektir

Yorumlar (2)