从文档中:
String[] split(String regex)
--返回:通过围绕给定正则表达式的匹配拆分此字符串计算的字符串数组
本质上,正则表达式用于定义输入字符串中的分隔符。您可以在模式中使用捕获组和反向引用(例如用于环视),但最终重要的是模式匹配的内容和位置,因为它定义了返回数组的内容。
如果您想使用正则表达式将原始字符串分成 7 个部分,那么您可以执行以下操作:
String s = "12-3456";
String[] parts = s.split("(?!^)");
System.out.println(parts.length); // prints "7"
for (String part : parts) {
System.out.println("Part [" + part + "]");
} // prints "[1] [2] [-] [3] [4] [5] [6] "
这将在零长度匹配断言上拆分(?!^)
,该断言位于字符串中第一个字符之前的任何位置。这可以防止空字符串成为数组中的第一个元素,并且尾随的空字符串已经被丢弃,因为我们使用了默认limit
参数 to split
。
但是,使用正则表达式来获取这样的字符串的单个字符是一种矫枉过正的做法。如果您只有几个字符,那么最简洁的选项是foreach
使用toCharArray()
:
for (char ch : "12-3456".toCharArray()) {
System.out.print("[" + ch + "] ");
}
如果字符串较长,这不是最有效的选择。
拆分开-
这也可能是您正在寻找的:
String s = "12-3456";
String[] parts = s.split("-");
System.out.println(parts.length); // prints "2"
for (String part : parts) {
System.out.print("[" + part + "] ");
} // prints "[12] [3456] "