簡體   English   中英

String.split處理空格和制表符的奇怪行為

[英]String.split's weird behaviour dealing with spaces and tabs

我有一個由制表符和空格以及一些任意字符組成的字符串。 下面的字符串由space space tab tab 1 space tab -2 tab space + space

import java.util.Arrays;

String[] s = "          1   -2   + ".split("[\\s]+");
System.out.println(Arrays.toString(s));

使用正則表達式[\\s+]運行拆分可能會得到[1, -2, +] ,但是我在我的機器上獲得的返回數組(OS X,JDK1.6.0_37)是[, 1, -2, +]

事實證明,第一個元素只是“空白”( s[0].equals("")返回true )所以它應該被\\s匹配。

我錯過了什么?

如果在拆分字符串時,字符串的第一個字符在分隔符中,則生成的數組的第一個元素始終為empty string

這樣,你的字符串總是以empty string開頭。 所以,你的分隔符 - \\s+將分為兩個部分中的" a"字符串(注意前導空格),首先是在\\s+之前是空字符串 "" ,而在它之后是a ,它是a

所以,你得到的輸出是顯而易見的。

事實證明,第一個元素只是“空白”(s [0] .equals(“”)返回true)所以它應該被\\ s匹配。

不,不應該。 空格不是空字符串。 他們之間有區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM