在Java中从字符串中删除未使用的空格和逗号

3
我有一个问题,我相信这个问题有一个相对简单的答案,但是此时此刻我脑子一片空白,似乎想不出一个优雅的解决方案,而不涉及荒谬的if语句。基本上,我有一个网页,它动态更新用户的存在为一个字符串,格式如下:

User1, User2, User3, User4

然而,当我从另一个位置删除这些用户中的一个时,他们被从列表中移除,但我却得到以下结果:

开始

, User2, User3, User4

中间

User1, , User3, User4

结尾

User1, User2, User3,

如果有人知道一个相对简单的方法来删除这些不需要的逗号,那将非常有帮助;这已经让我烦恼了好几个小时。

这个问题不够清晰。这些字符串在哪里?你是在服务器还是在JSP中进行操作?这可能可以使用replace()或更好的replaceFirst()来完成,但如果没有更多细节,我无法帮助你解决问题。 - Th0rndike
根据您的描述,我猜测当用户被删除时,您修改了输出字符串,而不仅仅是重新生成它。是这样吗? - KidTempo
这些字符串在jsp中,每次页面加载时都会重新生成。 - xdefaultx
4个回答

6
您可以使用正则表达式匹配 ,$^,, ,,然后将其替换为空。

我想你想要写的是 ^,,$ - KARASZI István
1
显然,OP 不是唯一一个出现了问题的人 ;) 已修复。谢谢! - Miquel
我们在讨论这样的正则表达式吗?display.replaceAll(",$|^,|, ,", "");抱歉,我已经有一段时间没有写过类似的东西了,所以我有点生疏。 - xdefaultx

1
",User1, , User3, User4,".replaceAll("[\\s],|,$|^,", "");

->

User1, User3, User4

1

您可以尝试以下方法:

String s = "User1, , User2, User3, ,...;
s = s.replaceAll(", ,", ",");

我可能会考虑到可能会有额外的空格。因为你知道它最终会发生。 - Tony Ennis
你需要另外几个语句来处理最终和初始逗号。 - Miquel

1
我会进行拆分,然后合并。
使用Guava
final Iterable<String> fields = Splitter.on(",")
  .trimResults()
  .omitEmptyStrings()
  .split(data);

final String trimmedData = Joiner.on(",").join(fields);

如果需要,您甚至可以使用{{link1:Iterables.filter}}验证输入字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接