在java中,如何仅在字符串处于起始位置时替换字符串中的子字符串

在java中,如何仅在字符串处于起始位置时替换字符串中的子字符串,java,string,Java,String,我想用其他子字符串从“DemoString”中复制“Demo”,但仅当字符串开头出现“Demo”时。如果出现“StringDemo”,则不会进行替换。如果字符串以键开头,请检查条件,然后用所需键替换第一个键,如下所示: String string = "demo string string demo"; if (string.startsWith("demo")) { System.out.println(string.replaceFirst("demo", "xyz")); }

我想用其他子字符串从“DemoString”中复制“Demo”,但仅当字符串开头出现“Demo”时。如果出现“StringDemo”,则不会进行替换。如果字符串以键开头,请检查条件,然后用所需键替换第一个键,如下所示:

String string = "demo string string demo";

if (string.startsWith("demo")) {
    System.out.println(string.replaceFirst("demo", "xyz"));
}
输出:

xyz string string demo
更新:

当我们使用replaceFirst()时,不需要添加条件,我们可以直接调用方法来替换字符串

System.out.println(string.replaceFirst("^demo", "xyz"));
你是说

String text = ...
String text2 = text.replaceAll("^Demo", "NotDemo");
对于正则表达式,
^
仅匹配字符串的开头。

请尝试以下操作:

String myline = line.replaceAll("^[Dd][eE][mM][Oo]", "");

看看这个简短的例子:

public class HelloWorld{

 public static void main(String []args){

    String s = "DemoString StringDemo DemoString";

    String[] str = s.split(" ");

    for(String ss : str)
    {
        int index = ss.indexOf("Demo"); //check if "Demo" is at the start of the string
        if(index == 0)
        {
            ss = ss.replace("Demo","Demo2");
        }
        System.out.println(ss);
    }
 }
}
输出:
Demo2String string Demo Demo2String

^Demo
使用此正则表达式,然后用所需的字符替换字符串Demo。string str=“DemoString”;字符串newString=str;如果(str.startsWith(“Demo”){newString=str.replace(“Demo”,“另一”);}@Shree,这将替换
Demo
中的
Demo
。但问题是,若起始位置有“Demo”,那个么它应该替换Demo子字符串。。。它不会讨论演示在开始和结束时会发生什么。当然,如果必须避免的话,我们可以使用字符串的ReplaceFirst方法。不要把事情复杂化。
“^(?i)demo”
Hiya,这很可能解决问题。。。但是,如果你能提供一些关于它如何工作以及为什么工作的解释,那就太好了:)别忘了——堆栈溢出上有很多新手,他们可以从你的专业知识中学到一两件事——对你来说显而易见的事对他们来说可能不是这样。嗨,这很可能解决问题。。。但是,如果你能提供一些关于它如何工作以及为什么工作的解释,那就太好了:)别忘了——堆栈溢出上有很多新手,他们可以从你的专业知识中学到一两件事——对你来说显而易见的事对他们来说可能不是这样。我同意;记录此代码如何回答问题。但是
DemoStringDemo
将被替换为
demostringdemo2
,对吗?是的,会。因为它是从演示开始的。您可以使用
replaceFirst()
而不是
replace()
答案的第二部分将不正确地用于此输入:“字符串演示”。它将产生“字符串”。您应该使用string.replaceFirst(“^demo”,“xyz”)。^匹配字符串的开头。@AlexMisiulia感谢您指出它,更正为nw。。。