Dize str1="ABCDEFGHIJKLMNOP"
bir dize deseni strptrn="gHi"
içerip içermediğini belirlemek mümkün mü? Karakterlerin büyük/küçük harfe duyarlı olmaması durumunda bunun mümkün olup olmadığını bilmek istedim. Öyleyse nasıl?Dize içeriyor - yoksayma durumu
cevap
Sen
kullanabilirsinizorg.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str,
CharSequence searchStr);
Çekler CharSequence bir arama CharSequenc içeriyorsa durumundan bağımsız olarak, boş değer. Vaka duyarsızlığı String.equalsIgnoreCase (String) ile tanımlanır.
Sıfır CharSequence false değerini döndürür. regex performansı açısından daima pahalı olarak
Bu seferki regex daha iyi olacaktır. Resmi bir doküman
, başvurmak için: StringUtils.containsIgnoreCase
Güncelleme:
Eğer olanlar arasında ise kim
- Apache commons kütüphaneye kullanmak istemiyorum
- don pahalı
regex/Pattern
tabanlı çözümlerle gitmek istiyorum, - Eğer
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
kullanarak kendi özelignoreCase
java.lang.String.regionMatchescontainsIgnoreCase
uygulayabilirsiniz,toLowerCase
kullanarak
ek dize nesne oluşturmak istemiyoruz: karakterleri karşılaştırırken doğruysa, durum yok sayar.
public static boolean containsIgnoreCase(String str, String searchStr) {
if(str == null || searchStr == null) return false;
final int length = searchStr.length();
if (length == 0)
return true;
for (int i = str.length() - length; i >= 0; i--) {
if (str.regionMatches(true, i, searchStr, 0, length))
return true;
}
return false;
}
Teşekkürler. İçinde indexOfIgnoreCase ... – vikingsteve
gibi diğer güzel şeylerin bolluğu Bu yöntem, samanlığın eşleştirilmiş kısmının uzunluğunun, iğne uzunluğuyla aynı sayıda UTF-16 kod birimi olacağı varsayımını getirir. Yani "ß" için arama yaparsanız ve dizge "SS" içeriyorsa, bir eşleşme bulamaz, bu iki dizgenin durumu görmezden geldiğinizde aynı olmasına rağmen (Almanca yerel ayarında ve tabii ki Bu tür bir şey yaptığınızda yerel ayarı ayarlayın.) – Trejkaz
org.apache.commons.lang3.StringUtils bu paket Android'de mevcut değildir –
Sen harf duyarsız eşleştirme için CASE_INSENSITIVE bayrağıyla java.util.regex.Pattern kullanabilirsiniz:
Pattern.compile(Pattern.quote(strptrn), Pattern.CASE_INSENSITIVE).matcher(str1).find();
Önceki yanıta bakın: @SamStephens http://stackoverflow.com/a/6996550/372926 yazdı: hem CASE_INSENSITIVE hem de UNICODE_CASE belirtmelisiniz ve hala doğru değerleri alamayacaksınız, çünkü Java tam casemapping kullanıyorsa, Sadece basit bir kalıplama kullanır. Bu bir problem." – Vini
Eğer regex ile gitmeyecek olursa:
"ABCDEFGHIJKLMNOP".toLowerCase().contains("gHi".toLowerCase())
Bu bir cevap olsa da, büyük bir sorun değil" String's –
Bu çok geniş bir unicode dünyasında çalışmıyor - bkz http://stackoverflow.com/a/6996550/ eğer 'gibi 372.926 – SamStephens
(file.getName(). toLowerCase() \t \t \t \t \t \t .Contains (editText.getText(). toString(). toLowerCase())) önerildiği gibi' –
bu
public static void main(String[] args)
{
String original = "ABCDEFGHIJKLMNOPQ";
String tobeChecked = "GHi";
System.out.println(containsString(original, tobeChecked, true));
System.out.println(containsString(original, tobeChecked, false));
}
public static boolean containsString(String original, String tobeChecked, boolean caseSensitive)
{
if (caseSensitive)
{
return original.contains(tobeChecked);
}
else
{
return original.toLowerCase().contains(tobeChecked.toLowerCase());
}
}
Eğer hassas bir şekilde kontrol edilmek istenirse ve eğer isterseniz yanlış bir şekilde geçmek istiyorsanız, üçüncü parametre olarak geçiş yapın. duyarsız bir şekilde kontrol edilecek değer. –
Bir
Pattern.compile(strptrn, Pattern.CASE_INSENSITIVE + Pattern.LITERAL).matcher(str1).find();
Pattern.quote (strptrn) her zaman döndürür "\ Q" + s + "\ e" bile İmran Tarık'ın versiyonunu optimize deneyin orada alıntı yapmak için bir şey değil, konservasyon ganimet performansı.
Bitwise kullanmalısınız | Ek operatör yerine operatör. –
- 1. JavaScript Regex Yoksayma Durumu
- 2. Espresso - TextView Dize içeriyor
- 3. Dize, başka bir iki dize içeriyor
- 4. Dize olarak geçiş yapma durumu
- 5. svn: xcuserdata göz ardı yoksayma
- 6. C# - chromedriver - yoksayma sertifikası hataları
- 7. Hizmet çalışanında ajax isteklerini yoksayma
- 8. LINQ dizesi başka bir dize büyük/küçük harf duyarsız içeriyor
- 9. subprocess.Popen execve() arg 3 dize olmayan bir değer içeriyor
- 10. Qt'deki fare ve klavye olaylarını yoksayma
- 11. IntelliJ IDEA: kod kapsamındaki önemsiz yöntemleri yoksayma
- 12. Belirli bir sütun tablo düzenleyicisinde yoksaymayı yoksayma
- 13. Subversion sıkıştırma içeriyor mu?
- 14. Kullanım SQL'de LINQ içeriyor
- 15. noscript içeriği içeriyor bg
- 16. "string içeriyor null byte" ile kullanıcılardan gönderildi
- 17. Angular characterLimit içinde boşluklar içeriyor
- 18. Alfanumerik _ ve boşluk içeriyor mu?
- 19. Bölücü görüntülü UISegementedControl boşluk içeriyor
- 20. BeatifulSoup4 get_text hala javascript içeriyor
- 21. NSUserDefaults Değer İçeriyor Veya Değil?
- 22. Qt Oluşturan: QtGui hata içeriyor
- 23. ActiveModel Serializer JSONAPI kaynak içeriyor
- 24. Python: filename String (metachar?) Içeriyor
- 25. Bir URI protokolü içeriyor mu?
- 26. Birkaç paragraf içeriyor window.Open() işlevi
- 27. Dosyadan okunan Powershell verileri dolar işareti içeriyor $
- 28. Belirli bir hava durumu için hava durumu?
- 29. `durumu 'sadece değiştirilmiş dosyaların durumu mümkün mü?
- 30. Özel Durumu
toUpperCase() kullanıyor? – Ravi