Java拆分字符串正则表达式:前导空格
我知道以前有人问过关于如何使用前导空格分割字符串的问题,例如:Java拆分字符串正则表达式:前导空格,java,regex,string,Java,Regex,String,我知道以前有人问过关于如何使用前导空格分割字符串的问题,例如: String str = " I want to be split \t!" String[] sarr = str.split("\\s+"); for(String s : sarr) System.out.println("'" + s + "'"); 生成结果: '' //leading white space 'I' 'want' 'to' 'be' 'split' '!' 解决此问题的方法是在拆分之前使用str.t
String str = " I want to be split \t!"
String[] sarr = str.split("\\s+");
for(String s : sarr) System.out.println("'" + s + "'");
生成结果:
'' //leading white space
'I'
'want'
'to'
'be'
'split'
'!'
解决此问题的方法是在拆分之前使用str.trim()
我想知道的是,为什么split()不能跳过前导空格,但可以跳过字符串的中间/结尾。我认为这应该回答您的问题 取自 围绕给定正则表达式的匹配项拆分此字符串 此方法的工作方式类似于通过调用具有 给定的表达式和零的极限参数。尾随空 因此,结果数组中不包括字符串
除了anirudh所说的,还要注意另一个选项:在前导空格中加上“I”:
(并且摆脱了恼人的第一个匹配)在Java中,在其自身的本机字符集上匹配空白,因为Java不支持Unicode空白属性-即使这样做是严格要求满足 Unicode标准,因此您必须使用如下代码:
"" /* dummy empty string for homogeneity */
"\\u0009" // CHARACTER TABULATION
"\\u000A" // LINE FEED (LF)
"\\u000B" // LINE TABULATION
"\\u000C" // FORM FEED (FF)
"\\u000D" // CARRIAGE RETURN (CR)
"\\u0020" // SPACE
"\\u0085" // NEXT LINE (NEL)
"\\u00A0" // NO-BREAK SPACE
"\\u1680" // OGHAM SPACE MARK
"\\u180E" // MONGOLIAN VOWEL SEPARATOR
"\\u2000" // EN QUAD
"\\u2001" // EM QUAD
"\\u2002" // EN SPACE
"\\u2003" // EM SPACE
"\\u2004" // THREE-PER-EM SPACE
"\\u2005" // FOUR-PER-EM SPACE
"\\u2006" // SIX-PER-EM SPACE
"\\u2007" // FIGURE SPACE
"\\u2008" // PUNCTUATION SPACE
"\\u2009" // THIN SPACE
"\\u200A" // HAIR SPACE
"\\u2028" // LINE SEPARATOR
"\\u2029" // PARAGRAPH SEPARATOR
"\\u202F" // NARROW NO-BREAK SPACE
"\\u205F" // MEDIUM MATHEMATICAL SPACE
"\\u3000" // IDEOGRAPHIC SPACE
,int)我的错,如果我比以前更仔细地阅读java文档,这个问题可能可以避免。“此方法返回的数组包含此字符串的每个子字符串,这些子字符串由与给定表达式匹配的另一个子字符串终止,或由字符串结尾终止。”感谢您的及时回复!
I
want
to
be
split
\t!
"" /* dummy empty string for homogeneity */
"\\u0009" // CHARACTER TABULATION
"\\u000A" // LINE FEED (LF)
"\\u000B" // LINE TABULATION
"\\u000C" // FORM FEED (FF)
"\\u000D" // CARRIAGE RETURN (CR)
"\\u0020" // SPACE
"\\u0085" // NEXT LINE (NEL)
"\\u00A0" // NO-BREAK SPACE
"\\u1680" // OGHAM SPACE MARK
"\\u180E" // MONGOLIAN VOWEL SEPARATOR
"\\u2000" // EN QUAD
"\\u2001" // EM QUAD
"\\u2002" // EN SPACE
"\\u2003" // EM SPACE
"\\u2004" // THREE-PER-EM SPACE
"\\u2005" // FOUR-PER-EM SPACE
"\\u2006" // SIX-PER-EM SPACE
"\\u2007" // FIGURE SPACE
"\\u2008" // PUNCTUATION SPACE
"\\u2009" // THIN SPACE
"\\u200A" // HAIR SPACE
"\\u2028" // LINE SEPARATOR
"\\u2029" // PARAGRAPH SEPARATOR
"\\u202F" // NARROW NO-BREAK SPACE
"\\u205F" // MEDIUM MATHEMATICAL SPACE
"\\u3000" // IDEOGRAPHIC SPACE