使用Java替换/附加字符串中特定位置的多个子字符串

时间:2011-12-06 19:10:54

标签: java regex

我没有找到解决我遇到的具体问题的方法。我正在做一些XML解析,其中我想操纵字符串中的单词。

鉴于我有一个案例:'word, word word word' - 单词可以是任何字符串,因为我不知道它们会提前是什么。

我希望能够操纵字符串以获得以下结果:'word., word word. word' - 所以,第一个单词和第三个单词我想将'.'附加到结尾它们。

对此有什么合适的方法?正则表达式会是最好的方法吗?

2 个答案:

答案 0 :(得分:0)

假设单词将使用相同的字符分隔,我认为最简单的方法是使用indexOf(" ")然后使用substring方法在返回的索引之前添加一个点。请记住,您也可以使用lastIndexOf(" ")将点添加到第三个单词,或者您甚至可以指定indexOf的起始位置,即

String words = "word, word word word";
String newWords

int space1 = words.indexOf(" ");

newWords = words.substring(0, space1) & "." & words.substring(space1 + 1);

int lastSpace = newWords.lastIndexOf(" ");

newWords = newWords.subString(0, lastSpace) & "." & newWords.subString(lastSpace + 1);

(我认为沿着这些方向的东西会起作用,但我没有测试过,而且我在没有IDE的情况下编写了它)

当然,我对正则表达式并不是很熟悉,你还没有真正给出那么多信息,因此正则表达式可能是一个选项,但我认为这需要你知道单词的长度。 (s),至少。

答案 1 :(得分:0)

如果您想使用正则表达式,那么以下内容应该适合您。正则表达式分为3组,然后可以在replaceAll中的替换正则表达式中引用。

System.out.println("hello, my name is"
    .replaceAll("(\\w+)(,\\s*\\w+\\s+\\w+)(\\s+\\w+)", "$1.$2.$3") );