Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java在字符串的特定位置替换/附加多个子字符串_Java_Regex - Fatal编程技术网

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

使用Java在字符串的特定位置替换/附加多个子字符串,java,regex,Java,Regex,我还没有找到任何解决我遇到的具体问题的方法。我正在做一些XML解析,我想在其中操作字符串中的单词 假设我有一个例子:'word,word'-单词可以是任何字符串,因为我事先不知道它们是什么 我希望能够操纵字符串以获得以下结果:'word.,word。单词“”-所以,我想在第一个单词和第三个单词后面加一个“”。 对此,什么是合适的方法?regex是最好的方法吗?假设单词将使用相同的字符分隔,我认为最简单的方法是使用indexOf(“”),然后使用substring方法在返回的索引前添加一个点。请记

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

假设我有一个例子:
'word,word'
-单词可以是任何字符串,因为我事先不知道它们是什么

我希望能够操纵字符串以获得以下结果:
'word.,word。单词“
”-所以,我想在第一个单词和第三个单词后面加一个“
”。


对此,什么是合适的方法?regex是最好的方法吗?

假设单词将使用相同的字符分隔,我认为最简单的方法是使用
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的情况下编写了它)


当然,我对regex不是很熟悉,你也没有给出太多的信息,所以regex可能是一种选择,但我认为这至少需要你知道单词的长度。

如果你想使用regex,那么下面的内容应该适合你。regexp分为3个组,然后可以在replaceAll中的替换regexp中引用

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

听起来你已经知道怎么做了。您是否只是想就正则表达式在某种程度上是否比内置字符串方法“更好”,或者其中一种方法是否比另一种方法更有效得出一个意见?照目前的情况,我倾向于说,无论哪个对你有效。正则表达式和字符串都能很好地完成这项工作,这是一个很好的方法。我能够按照这些思路做一些事情,结果很好。谢谢你的回答。谢谢,我很高兴我能帮忙-很高兴有一个被接受的答案!