【问题标题】:Separating string in java using regex使用正则表达式在java中分隔字符串
【发布时间】:2018-01-23 20:17:39
【问题描述】:

我有一个String str="[12] word1 word2 (12.4%)"

我需要的是只得到word1 word2 并用下划线替换空格输出应该是这样的word1_word2

然后我怎样才能让它动态地像 str 可能的话可能会像word1_word2_word3_etc 一样递增

我怎样才能使代码尽可能短?

【问题讨论】:

  • 这种字符串操作的最短代码:使用正则表达式。现在在网络上搜索正则表达式,了解它的工作原理,并编写一些代码。祝你好运!
  • 是的,我用过这样的`String newstr = results.get(0).toString().replaceAll("[[^a-zA-Z]]", "");` 但是如果我只能在每个单词上获得至少一个空格,我可以用下划线替换它,单词将只打印没有空格,知道如何实现吗?
  • 是的,不要消除空间。如果您有尝试过的代码,请在问题中显示。 idownvotedbecau.se/nocode
  • 如何通过仅获取正则表达式中的单词和空格来实现这一点?下面的答案有效,但我仍然很好奇我该怎么做
  • str = str.replaceFirst(".*]\\s*", "").replaceFirst("\\s*\\(.*", "").replaceAll("\\s+", "_"),即去掉不需要的前缀,去掉不需要的后缀,然后用下划线替换空格。

标签: java arrays algorithm indexing split


【解决方案1】:

您可以使用 split() 来拆分单词。然后使用字符串生成器将它们组合在一起。

总体思路应该是这样的(可能不是 100% 正确):

String[] words = str.split(" ");
StringBuilder sb = new StringBuilder();

// So don't include the first and last word as they are "[12]" and "(12.4%)".
// It doesn't matter how many words you have as we use words.length
for (int i = 1; i < words.length - 1; ++i) 
{
    // you could figure out a better method to add "_"
    if (i != 1)
    {
        sb.append("_");
    }
    sb.append(words[i]);
}
String result = sb.toString();

【讨论】:

  • @user3121362 - 不要忘记将此答案标记为正确,这样您的问题就不会再出现未回答的情况。
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多