如何告诉java.lang.String.split跳过分隔符?

Tho*_*mas 2 java

作为输入,我的程序获取包含IP地址的字符串由行分隔符分隔,即每行一个IP地址.要验证我所做的每个地址:

String[] temp;
temp = address.split(System.getProperty("line.separator"));
Run Code Online (Sandbox Code Playgroud)

然后我循环通过字符串数组.

我想知道为什么除了最后一个IP地址之外的所有地址都是无效的.我发现它们看起来像10.1.1.1 ^ M.

有没有办法告诉java.lang.String.split在将令牌放入数组之前删除分隔符?或者我还有其他选择吗?对不起,我不是Java忍者,所以我想在开始谷歌搜索几个小时之前我会问你们.

谢谢托马斯

Mar*_*ers 6

问题是文件中的分隔符是"\r\n",但值System.getProperty("line.separator")"\n".这意味着"\r"不将其视为分隔符的一部分.

  • 我会使用`\\ s +`打破任意数量的空格. (2认同)

ada*_*shr 5

你为什么不使用,address.split("\\s+")因为有效的 IP地址永远不会包含空格?

预定义的字符类

.     Any character (may or may not match line terminators) 
\d    A digit: [0-9] 
\D    A non-digit: [^0-9] 
\s    A whitespace character: [ \t\n\x0B\f\r] 
\S    A non-whitespace character: [^\s] 
\w    A word character: [a-zA-Z_0-9] 
\W    A non-word character: [^\w] 
Run Code Online (Sandbox Code Playgroud)