以编程方式替换Java中每行开头的4个空格

以编程方式替换Java中每行开头的4个空格,java,regex,Java,Regex,我有一条像绳子一样的线 try (EchoClient echoClient = EchoClient.create()) { EchoRequest request = EchoRequest.newBuilder().setName().setPoint().setLoooooongNameWithTest().build(); EchoResponse response = echoClient.echo(request); }

我有一条像绳子一样的线

    try (EchoClient echoClient = EchoClient.create()) {
      EchoRequest request =
          EchoRequest.newBuilder().setName().setPoint().setLoooooongNameWithTest().build();
      EchoResponse response = echoClient.echo(request);
    }
我需要删除前4个空格。比如:

try (EchoClient echoClient = EchoClient.create()) {
  EchoRequest request =
      EchoRequest.newBuilder().setName().setPoint().setLoooooongNameWithTest().build();
  EchoResponse response = echoClient.echo(request);
}
我的方法是使用换行符拆分字符串,并替换前4个空格使用正则表达式

String[] codes = doc.split("\\r?\\n");
for (int i = 0; i < codes.length; i++) {
  codes[i] = codes[i].replaceFirst("^( ){4}", "");
}
String result = String.join("\n", codes);
我想知道你有没有更好的办法来解决这个问题。或者用任何方法替换每行4个空格而不使用循环


非常感谢。

您可以替换新行上的所有4个起始空格,如下所示

字符串s=//此处显示您的文本 s、 replaceAll?m^{4};
您可以替换新行上的所有4个起始空格,如下所示

字符串s=//此处显示您的文本 s、 replaceAll?m^{4};
您可以在具有多行模式的单个方法调用中执行此操作,如下所示:

正则表达式详细信息:

?m:启用内联多行模式,以便在换行或开始后可以匹配^ ^{4}:在一行的开头正好匹配4个空格
您可以在具有多行模式的单个方法调用中执行此操作,如下所示:

正则表达式详细信息:

?m:启用内联多行模式,以便在换行或开始后可以匹配^ ^{4}:在一行的开头正好匹配4个空格
以doc=doc.replaceFirst?m^{4}的形式在单个方法调用中实现这一点;或者查看这个演示:如果您使用的是Java11+,那么您可以使用stripLeading方法从每个数组元素(即字符串的行)中删除前导空格。以doc=doc.replaceFirst?m^{4}的形式在单个方法调用中实现这一点;或者查看这个演示:如果您使用的是Java11+,那么您可以使用stripLeading方法从每个数组元素(即字符串的行)中删除前导空格。这也将移除线路断路器。不过还是要谢谢你。finding regex被@anubhava finding regex替换了。这是更好的方法。这将删除线路断路器以及。不过还是要谢谢你。finding regex被@anubhava finding regex替换了。这是更好的方法。我们应该在这里使用replaceAll。哦,是的,应该在所有行中使用replaceAll来替换。我们应该在这里使用replaceAll。哦,是的,应该在所有行中使用replaceAll来替换。
doc = doc.replaceAll("(?m)^ {4}", "");