仅当子字符串是整个单词时才替换字符串中的所有子字符串

时间:2018-07-12 11:54:30

标签: java string

我尝试编写Java代码以仅从子字符串替换整个字符串的情况下替换字符串中的子字符串。例如,假设输入字符串inputString =“ abc ab bcd ab abcd”,而我想将所有子字符串“ ab”替换为“ xyz”,以使输出字符串看起来像outputString =“ abc xyz bcd xyz abcd”。如何做到这一点? 这是我尝试过的:

public class TestReplace{

    public static void main(String[] args) {

        String str = "abc ab bcd ab abcd";
        if(str.contains("ab")){
            str = str.replaceAll("ab", "xyz");
        }
        System.out.println(str);
    }
} 

输出:xyzc xyz bcd xyz xyzcd。我知道为什么会出现此输出,但是我希望输出为abc xyz bcd xyz abcd。感谢帮助。

1 个答案:

答案 0 :(得分:0)

请尝试将“ ab”替换为“ xyz”,而不要用“ xyz”替换“ ab”(因此请添加空格):

String str = "abc ab bcd ab abcd";
if(str.contains(" ab ")){
    str = str.replaceAll(" ab ", " xyz ");
}
System.out.println(str);

如果代码不是以单词开头或结尾,这将起作用,但是如果它在字符串的开头或结尾处,则它将不会替换该单词(因为它之前或之后没有空格)之后)。为此,您需要添加和删除这些空格:

String str = "abc ab bcd ab abcd";
str = " " + str + " ";
if(str.contains(" ab ")){
    str = str.replaceAll(" ab ", " xyz ");
}
str = str.substring(1, str.length());
System.out.println(str);

这将首先在字符串的两侧添加空格,执行替换,然后删除这些空格。

相关问题