使用Java在字符串的特定位置替换/附加多个子字符串
我还没有找到任何解决我遇到的具体问题的方法。我正在做一些XML解析,我想在其中操作字符串中的单词 假设我有一个例子:使用Java在字符串的特定位置替换/附加多个子字符串,java,regex,Java,Regex,我还没有找到任何解决我遇到的具体问题的方法。我正在做一些XML解析,我想在其中操作字符串中的单词 假设我有一个例子:'word,word'-单词可以是任何字符串,因为我事先不知道它们是什么 我希望能够操纵字符串以获得以下结果:'word.,word。单词“”-所以,我想在第一个单词和第三个单词后面加一个“”。 对此,什么是合适的方法?regex是最好的方法吗?假设单词将使用相同的字符分隔,我认为最简单的方法是使用indexOf(“”),然后使用substring方法在返回的索引前添加一个点。请记
'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") );
听起来你已经知道怎么做了。您是否只是想就正则表达式在某种程度上是否比内置字符串方法“更好”,或者其中一种方法是否比另一种方法更有效得出一个意见?照目前的情况,我倾向于说,无论哪个对你有效。正则表达式和字符串都能很好地完成这项工作,这是一个很好的方法。我能够按照这些思路做一些事情,结果很好。谢谢你的回答。谢谢,我很高兴我能帮忙-很高兴有一个被接受的答案!