8 Kasım 2016 Salı

Java pattern match - Satır başındaki boşluk tespiti

Merhaba,

Elimizde bir string var. Bu string in başında bir karakter yada iki karater boşluk olduğunda işlem yapmak istiyoruz. Bir karakter boşluk için eşleşen pattern in iki boşluk için eşleşmemesi gerekiyor.
Burada problem genelde 1 whitespace için çalışan pattern match eşleşmesinin 2 whitespace için de çalışması oluyor. Çünkü 2 white space aslında kendi içinde 1 whitespace i de içeriyor.
Fakat biz tam olarak 1 boşluk olduğunda farklı, 2 boşluk olduğunda farklı pattern eşleşmesi istiyoruz.
Bunun için alttaki iki REGEX kullanılabilir.


[1]

Pattern whitespace = Pattern.compile("^\\s(?!\\s)");

Pattern whitespace = Pattern.compile("^\\s{3}(?!\\s)");

[2]

if(" WhiteSpace".matches("^\\s{1}[^\\s]+")){
    call();
} else if("  WhiteSpace".matches("^\\s{2}[^\\s]+")){
    keep();
}