2011-05-10 36 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() - 它只是将字符串分解成一个字符数组...