【问题标题】:Removing unused spaces and commas from a String - Java从字符串中删除未使用的空格和逗号 - Java
【发布时间】:2012-06-15 12:04:28
【问题描述】:

我有一个问题,我确信对此有一个相对简单的答案,但目前我脑子里放了一个大屁,似乎想不出一个优雅的解决方案涉及大量可笑的 if 语句。

基本上,我有一个网页动态更新用户呈现为一个字符串,这样的风格化

用户1、用户2、用户3、用户4

但是,当我从其他位置删除其中一个用户时,他们会从列表中删除,但我只剩下以下内容

开始

,用户2,用户3,用户4

中间

用户 1, , 用户 3, 用户 4

结束

用户1,用户2,用户3,

如果有人知道删除这些不需要的逗号的相对简单的方法,那将非常有帮助,它已经困扰了我几个小时。

非常感谢。

【问题讨论】:

  • 这个问题不够清楚。这些字符串在哪里?你是在服务器还是在jsp中这样做?这可能可以通过 replace() 或更好的 replaceFirst() 来完成,但如果没有更多细节,我无法帮助您
  • 我从您的描述中推测,当用户被删除时,您正在修改输出字符串,而不仅仅是重新生成它。对吗?
  • 字符串在jsp中,每次页面加载都会重新生成

标签: java string jsp comma


【解决方案1】:

您可以将,$^,, , 与正则表达式匹配,并将其替换为空

【讨论】:

  • 我猜你想写^,,$
  • 很明显,OP 不是唯一一个有脑子的 ;) 已修复。谢谢!
  • 我们在谈论像这样的正则表达式吗 display.replaceAll(",$|^,|, ,", "");对不起,我已经有一段时间没有写这样的东西了,所以我很生疏
【解决方案2】:

你可以试试:

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

【讨论】:

  • 我可能会考虑到可能会有额外的空格。因为你知道它最终会发生。
  • 您需要一些其他语句来表示最终逗号和初始逗号
【解决方案3】:
",User1, , User3, User4,".replaceAll("[\\s],|,$|^,", "");

->

User1, User3, User4

【讨论】:

    【解决方案4】:

    我会先拆分,然后再加入。

    Guava:

    final Iterable<String> fields = Splitter.on(",")
      .trimResults()
      .omitEmptyStrings()
      .split(data);
    
    final String trimmedData = Joiner.on(",").join(fields);
    

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

    【讨论】:

      猜你喜欢
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多