我的代码是: -
class SplitString {
public static void main(String[] args) {
Pattern p;
String test = "a1b2c3";
String[] token1 = test.split("\\d");
System.out.println("first case : " + token1.length);
for (String s : token1)
System.out.print(s + " ");
String[] token2 = test.split("\\b");
System.out.println("\n\nsecond case : " + token2.length);
for (String s : token2)
System.out.print(s + " ");
String[] token3 = test.split("\\a");
System.out.println("\n\nthird case : " + token3.length);
for (String s : token3)
System.out.print(s + " ");
}
}
输出: -
first case : 3
a b c
second case : 2
a1b2c3
third case : 1
a1b2c3
我是java的新手,并试图执行拆分,但无法掌握其概念,因为所有案例都有不同的答案,但它们之间的区别究竟是什么?
答案 0 :(得分:5)
你需要的就是Javadoc。 split
将您提供的字符串解释为正则表达式,而不是文字字符串。请查找正则表达式语法here的完整详细信息。
或者,如果您使用的是Eclipse,则可以使用Eclipse的“查找”对话框来播放正则表达式(选中“正则表达式”复选框)。
答案 1 :(得分:1)
Split会使用公共分隔符将字符串分解为字符串数组。一个更常见的例子是,如果您的数据是以逗号分隔的,那么:
1,2,3,4,5
然后,如果你在逗号字符上分割数据,你最终会得到一个包含5个字符串的数组: [ “1”, “2”, “3”, “4”, “5”]
答案 2 :(得分:1)
在第一种情况下,分隔符\d
表示任何数字。字符串在每组数字处分开。
在第二种情况下,\b
表示单词边界。字符串的开头计数,因此字符串在那里被分割。
在第三种情况下,\a
表示字符BEL(ASCII 7)。
找到表达式语法的完整指南here.
答案 3 :(得分:1)
\d A digit: [0-9]
\a The alert (bell) character ('\u0007')
\b A word boundary
所以第一种情况 - 分裂数字,第二种“一个字”,第三种所有字符串 - 贝尔字符未找到
答案 4 :(得分:1)
正如您所知,split
方法使用正则表达式模式来分割字符串:
\d
使用数字数字作为分隔符将其拆分\b
使用单词边界拆分它,所以你实际上有一个空字符串和整个余数\a
是一个特殊字符,在您要拆分的字符串中不存在,因此您只有一个令牌查看所有正则表达式选项的here。