我想分割一些用戶輸入。輸入形式爲a1 b2 c3 d4。 對於每個輸入(例如:a1),我如何將它分成'a'和'1'?沒有空格的Java字符串分割
我很熟悉字符串拆分功能,但是我作爲分隔符指定了什麼,或者這甚至可能?
謝謝。
我想分割一些用戶輸入。輸入形式爲a1 b2 c3 d4。 對於每個輸入(例如:a1),我如何將它分成'a'和'1'?沒有空格的Java字符串分割
我很熟悉字符串拆分功能,但是我作爲分隔符指定了什麼,或者這甚至可能?
謝謝。
如果您想要一般地拆分字符串(而不是嘗試對其他答案中的字符進行計數),則仍然可以使用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));
在這一點上,阿爾法陣列將有你的字符串的α部分和數字陣列將有數字部分。 (注意:我實際上並沒有編譯它來測試它會起作用,但它應該給你基本的想法。)
分割空間到字符串數組,然後將單個字符與String.charAt(0)
和String.charAt(1)
我會建議只是遍歷三五成羣的字符。
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+)
這不會爲k11 l12 m13等工作... – Kal 2011-05-10 03:06:44
我覺得它是1字母/ 1位數組合。它可能是,仍然。 – Ryan 2011-05-10 03:08:05
謝謝。只適用於1個字母的1位數組合。 – Triple777er 2011-05-10 03:25:07
你可以使用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());
是的,這是可能的,則可以使用split("");
後使用split(" ")
分割用戶輸入到個人令牌,則可以使用每個令牌拆分成字符split("")
(使用空字符串作爲分隔符)。
它確實取決於你以後如何使用數據,但除了split("")
或訪問個別字符的索引,另一種方式分裂成單個字符是toCharArray()
- 它只是將字符串分解成一個字符數組...
+1爲正則表達式的建議。 – 2011-05-10 03:16:06
「\ p {Alpha}」給我一個錯誤,說「無效的轉義序列」。 – Triple777er 2011-05-10 03:35:29
@ Triple777er - 現在嘗試「[a-zA-Z]」而不是「\ p {Alpha}」。 – JasCav 2011-05-10 03:38:19