Java字符串分割不包含空格

3

我想要分割一些用户输入。输入的格式为a1 b2 c3 d4。 对于每个输入(例如;a1),我应该如何将其分成'a'和'1'?

我熟悉字符串分割函数,但是我应该指定什么作为分隔符呢?或者这是否可能?

谢谢。

7个回答

3

你可以使用 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());

如果他选择了“aa31”或类似的内容,那么这将无法正常工作。虽然我不知道是否可能解决,但我认为还是提一下比较好。 - JasCav
@JasCav:当然这不会发生。但是让楼主来说类似的话。我已经因为一个类似的评论而编辑了原始问题,这是我的错误,因为那个评论并不是来自楼主。 - Adeel Ansari
@Adeel - 很好的观点。有时基于开发人员的需求,选择简单的答案实际上更好。我需要注意不要在某些时候过度设计解决方案。 - JasCav

2

具体取决于之后如何使用数据,但除了使用split("")或通过索引访问单个字符外,另一种将字符串拆分为单个字符的方式是使用toCharArray()--它只是将字符串分解为字符数组...


2

如果你想通用地分割字符串(而不是尝试按其他答案计算字符数),仍然可以使用String.split(),但必须利用正则表达式。(注意:当你有类似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));

此时,alpha数组将包含字符串的字母部分,numeric数组将包含数字部分。(注意:我没有实际编译测试它是否能正常工作,但它应该能给你基本的想法。)


"\p{Alpha}" 给我一个错误,说"无效的转义序列"。 - Triple777er
@Triple777er - 现在先尝试使用"[a-zA-Z]"而不是"\p{Alpha}"。 - JasCav
非常感谢,Jas。现在我已经有了基本的想法。 - Triple777er

1

是的,这是可能的,你可以使用 split("");


1

使用split(" ")将用户输入分割成单独的令牌后,您可以使用split("")(使用空字符串作为分隔符)将每个令牌分割成字符。


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


1
我想这可能是一个字母/数字组合。现在还有可能。 - Ry-
谢谢。这仅适用于1个字母1个数字的组合。 - Triple777er

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接