2013-12-23 39 views
1

我從Apache Commons Lang的StringUtils.join得到奇怪的結果。比方說,我有:奇怪的Apache Commons Lang StringUtils.join結果

List<String> values = new LinkedList<>(); 

values.add("120"); 
values.add("123456789"); 
values.add("9000"); 
values.add("en"); 

byte[] data = StringUtils.join(values, new char[] {1}).getBytes(); 

我預計將有31323001313233343536373839013930303001656e,這是120.123456789.9000.en,與.0x01。但令我困惑的是,我得到 5b3132302c203132333435363738392c20393030302c20656e5d5b4340333664303437而不是,它轉換爲[120, 123456789, 9000, en][[email protected]。在我這樣做的過程中是否存在一個引起奇怪值的問題?

+3

哪'join'方法是您使用?我沒有得到任何'join'方法,它將第二個參數作爲'char'數組。 –

+1

太棒了,這是一個愚蠢的錯誤,我真的認爲它有一個方法將字符數組連接到一個字符串,但它調用StringUtils.join(T ... x); –

回答

1

您使用下面的方法:

public static <T> String join(T... elements) 

聯接所提供的陣列的元件到含有元素的提供的列表的單個字符串。

未將分隔符添加到已連接的字符串中。空數組中的空對象或空字符串由空字符串表示。

因此,此方法在字符串列表和char數組上調用toString(),並加入結果。

你想傳遞一個字符或字符串分隔符,第二個參數來代替:

StringUtils.join(values, '.').getBytes();