2016-12-13 9 views
0

Я хочу проверить, содержит ли строка в другой строке, но в случае нечувствительности.Можем ли мы проверить, содержит ли строка в другой строке, не чувствительной к регистру?

например - «Кабир» содержится в «Доме д-ра Кабира». Теперь «Кабир» с капиталом K должен найти в «доме доктора Кабира». с или без пробелов в этом предложении.

Я попытался использовать содержит. Но contains() чувствителен к регистру, я также пытался использовать equalsIgnoreCase(), но это не полезно.

 for (int i = 0; i < itemsList.size(); i++) { 
     if (matching.contains(itemsList.get(i))) { 
      item = itemsList.get(i).trim(); 
      break; 
     } 
    } 

Также попробовал это, выполнив строчку в верхнем регистре, но проверяет все буквы как Верхний регистр. Я хочу проверить, является ли только начальная буква капиталом.

for (int i = 0; i < itemsList.size(); i++) { 
     if (matching.contains(itemsList.get(i))) { 
      item = itemsList.get(i).trim(); 
      break; 
     } 
    } 

Может ли кто-нибудь помочь в этом, пожалуйста? Спасибо.

EDIT: Если я хочу разделить «кабир» из строки, как это сделать?

+1

дубликат этого Я думаю, http://stackoverflow.com/questions/14972299/how-to- use-contains-and-equalsignorecase-in-string – msagala25

ответ

4

Просто строчные обе строки, а затем использовать :

for (int i = 0; i < itemsList.size(); i++) { 
    if (matching.toLowerCase().contains(itemsList.get(i).toLowerCase())) { 
     item = itemsList.get(i).trim(); 
     break; 
    } 
} 
+0

Я пробовал это. Но это проверяет либо все строчные буквы, либо буквы верхнего регистра. но что, если одно слово заглавное, а другие маленькие, как «Кабир»? – Sid

+1

@Sid Мое решение, как и другие ответы, преобразует строки _both_ в строчные буквы, поэтому дело больше не имеет значения, только буквы. Имеет ли это смысл? –

+0

как дополнительный, String неизменен. поэтому он не изменит строку 'matching', если вы не присвоили ей значение нижнего регистра. – msagala25

3

Просто преобразуйте обе строки в нижний или верхний регистр перед использованием метода .contains().

Например:

if (str1.toLowerCase().contains(str2.toLowerCase())) 
    //do whatever 
+0

Я пробовал это. Но это проверяет либо все строчные буквы, либо буквы верхнего регистра. но что, если одно слово заглавное, а другие маленькие, как «Кабир»? – Sid

+0

@Sid Это все равно будет работать, потому что вы должны преобразовать обе строки перед выполнением соответствия. Таким образом, ни одна строка не будет содержать букву верхнего регистра перед проверкой. – user3437460

2

сделать обе строки ниже (или верхний) случае

String one = "test"; 
String two = "TESTY"; 

if (two.toLowerCase().contains (one.toLowerCase())) { 
    System.out.println ("Yep"); 
} 
else { 
    System.out.println ("Nope"); 
} 
+0

Я пробовал это. Но это проверяет либо все строчные буквы, либо буквы верхнего регистра. но что, если одно слово заглавное, а другие маленькие, как «Кабир»? – Sid

+0

это делает оба слова в нижнем регистре –