【发布时间】:2015-11-09 23:11:46
【问题描述】:
我有一个字符串。该字符串具有用逗号分隔的值(例如 Bob、John、Jill),但有时该字符串只有一个值(例如 Bob)。 我需要提取这些值,所以我使用这样的东西:
String str = "Bob,John,Jill";
StringTokenizer strTok = new StringTokenizer(str , ",");
这可行,我现在可以单独访问这 3 个名称。但是如果我的字符串只包含单词 Bob(现在没有逗号)怎么办。这段代码失败了,所以我的解决方案是检查逗号是否存在,如果存在则我进行tokanize,如果不存在则我只获取字符串(我知道这个条件语句不好,因为它不能正确处理 null 和其他条件,但我只想简短地显示问题):
if( (str != null) && (!str.isEmpty()) && (!str.contains(",")) && (str.length() > 0)){
// only 1 element exists, just use the string
}
else{
//Tokenize
}
这对我来说似乎不是一个非常干净的解决方案,有没有更好的方法来完成这个,我可以避免这样的条件检查?我尝试使用正则表达式,但如果只有一个元素或我可以使用的第三方库,我无法找到解决方案?
【问题讨论】:
-
只需在字符串的开头或结尾添加一个逗号
-
@EngineerDollery 在 Java 中有许多常见且功能完善的字符串拆分机制,为什么要破坏您的输入以使其与损坏的、已弃用的工具“工作”?
-
如果我认为这是一个很好的答案,我会输入它作为答案,而不是评论:) 但是,它确实解决了问题,不是吗?顺便说一句:在 java 中,字符串是不可变的,所以这实际上并没有“破坏”输入。
标签: java regex string tokenize delimiter