我想分割一些用户输入。输入形式为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