2011-05-10 33 views
2

我想分割一些用戶輸入。輸入形式爲a1 b2 c3 d4。 對於每個輸入(例如:a1),我如何將它分成'a'和'1'?沒有空格的Java字符串分割

我很熟悉字符串拆分功能,但是我作爲分隔符指定了什麼,或者這甚至可能?

謝謝。

回答

1

如果您想要一般地拆分字符串(而不是嘗試對其他答案中的字符進行計數),則仍然可以使用String.split(),但必須使用regular expressions。 (注意:當你有一個像A1,A2,aaa333等字符串這個答案將工作)

String ALPHA = "\p{Alpha}"; 
String NUMERIC = "\d"; 

String test1 = "a1"; 
String test2 = "aa22"; 

ArrayList<String> alpha = new ArrayList(); 
ArrayList<String> numeric = new ArrayList(); 

alpha.add(test1.split(ALPHA)); 
numeric.add(test1.split(NUMERIC)); 
alpha.add(test2.split(ALPHA)); 
numeric.add(test2.split(NUMERIC)); 

在這一點上,阿爾法陣列將有你的字符串的α部分和數字陣列將有數字部分。 (注意:我實際上並沒有編譯它來測試它會起作用,但它應該給你基本的想法。)

+0

+1爲正則表達式的建議。 – 2011-05-10 03:16:06

+0

「\ p {Alpha}」給我一個錯誤,說「無效的轉義序列」。 – Triple777er 2011-05-10 03:35:29

+0

@ Triple777er - 現在嘗試「[a-zA-Z]」而不是「\ p {Alpha}」。 – JasCav 2011-05-10 03:38:19

0

分割空間到字符串數組,然後將單個字符與String.charAt(0)String.charAt(1)

0

我會建議只是遍歷三五成羣的字符。

for(int i = 0; i < str.length(); i += 3) { 
    char theLetter = str.charAt(i); 
    char theNumber = str.charAt(i + 1); 
    // Do something 
} 

編輯:如果它可以比一個字母或數字更多,使用正則表達式:

([a-z]+)(\d+) 

信息:http://www.regular-expressions.info/java.html

+0

這不會爲k11 l12 m13等工作... – Kal 2011-05-10 03:06:44

+1

我覺得它是1字母/ 1位數組合。它可能是,仍然。 – Ryan 2011-05-10 03:08:05

+0

謝謝。只適用於1個字母的1位數組合。 – Triple777er 2011-05-10 03:25:07

1

你可以使用String#substring()

String a1 = "a1" 
String firstLetterStr = a1.substring(0,1); 
String secondLetterStr = a1.substirng(1,a1.length()); 

同樣,

String c31 = "c31" 
String firstLetterStr = c31.substring(0,1); 
String secondLetterStr = c31.substirng(1,c31.length()); 
+0

如果他選擇「aa31」或類似的東西,它將不起作用。不知道是否有可能,但只是想到我會指出。 – JasCav 2011-05-10 03:12:18

+0

@JasCav:當然這不會。但讓OP來,並說這樣的事情。我已經犯了一個基於類似評論而編輯原始問題的錯誤 - 而不是來自OP。 – 2011-05-10 03:15:22

+0

@Adeel - 好點。根據開發人員的需求,有時最好選擇簡單的答案。有時候我不得不小心不要濫用解決方案。 – JasCav 2011-05-10 03:18:08

1

是的,這是可能的,則可以使用split("");

1

後使用split(" ")分割用戶輸入到個人令牌,則可以使用每個令牌拆分成字符split("")(使用空字符串作爲分隔符)。

2

它確實取決於你以後如何使用數據,但除了split("")或訪問個別字符的索引,另一種方式分裂成單個字符是toCharArray() - 它只是將字符串分解成一個字符數組...