gpt4 book ai didi

java StringTokenizer 意外结果

转载 作者:行者123 更新时间:2023-12-02 08:40:23 24 4
gpt4 key购买 nike

我有以下代码,它将标记字符串以创建对象列表:

import java.util.StringTokenizer;


public class TestStringTokenizer {
private final static String INTERNAL_DELIMETER = "#,#";
private final static String EXTERNAL_DELIMETER = "#|#";
public static void main(String[]aregs){
String test= "1#,#Jon#,#176#|#2#,#Jack#,#200#|#3#,#Jimmy#,#160";
StringTokenizer tokenizer = new StringTokenizer(test, EXTERNAL_DELIMETER);
while(tokenizer.hasMoreElements()){
System.out.println(tokenizer.nextElement());
//later will take this token and extract elements
}
}
}

我期望的输出是
1#、#乔恩#、#176
2#、# jack #、#200
3#、#吉米#、#160

我得到的是:1
,
乔恩
,
176
2
,
jack
,
200
3
,
吉米
,
160

如果我将内部分隔符更改为类似的东西,它将正常工作为什么会发生这种行为?

最佳答案

根据 StringTokenizer JavaDocs

http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

使用 String.split 代替:

String[] strArr = stringToSplit.split(INTERNAL_DELIMETER);

您需要做的唯一更改是 EXTERNAL_DELIMETER 中的或管道符 (“|”) 是一个特殊的正则表达式字符,必须转义:“\\|”。

更多信息可以在 String.split Javadoc 中找到:

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)

关于java StringTokenizer 意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22279617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com