2013-05-16 13 views
9

Kiedy wykonaćrozdzielonego niewrażliwy String() metoda

String test="23x34 "; 
String[] array=test.split("x"); //splitting using simple letter 

Mam dwa elementy w tablicy jako 23 i 34

ale gdy zrobiłem

String test="23x34 "; 
String[] array=test.split("X"); //splitting using capitalletter 

mam jedną pozycję w tablica 23x34

Czy istnieje sposób, w jaki mogę użyć metody dzielenia jako niewrażliwego na wielkość liter lub czy istnieje jakakolwiek inna metoda, która może pomóc?

Odpowiedz

14

użyć wyrażenia regularnego wzorca [xX] w split

String x = "24X45"; 
String[] res = x.split("[xX]"); 
System.out.println(Arrays.toString(res)); 
+0

dzięki działa. –

36

split zastosowań, jako dokumentacja wskazuje, regexp. wyrażenie regularne dla przykładu będzie:

"[xX]" 

Również flag (?i) przełącza case insensitivty. W związku z tym następuje również poprawne:

"(?i)x" 

W tym przypadku x może być dowolny litteral właściwie uciekł.

+0

downvoter prosimy o komentarz. – njzk2

+3

+1: dla '(? I)'. – wchargin

+1

+1 dla '(? I)', może być użyty dla zdań. Przykład: 'String [] array =" 24xXx45 ".split (" (? I) XXX "); // [24, 45] ' –

7

Można również użyć wbudowanego flagę w regex:

String[] array = test.split("(?i)x"); // splits case insensitive 
-1

Można użyć wyrażenia regularnego jako argumentu do split, tak:

"32x23".split("[xX]"); 

Albo można użyć StringTokenizer że umożliwia ustawienie zestawu ograniczników w następujący sposób:

StringTokenizer st = new StringTokenizer("32x23","xX"); 
//           ^^ ^^ 
//          string delimiter 

To ma Zaletą jest to, że jeśli chcesz utworzyć listę ograniczników programowo, na przykład dla każdej małej litery na liście ograniczników dodaj jej korespondenta, możesz to zrobić, a następnie przekazać wynik do StringTokenizer.

2

ja osobiście wolę korzystania

String modified = Pattern.compile("x", Pattern.CASE_INSENSITIVE).matcher(stringContents).replaceAll(splitterValue); 
String[] parts = modified.split(splitterValue); 

W ten sposób można zapewnić każdy regex będzie działać tak długo, jak masz unikalną wartość Splitter

Powiązane problemy