如何为给定字符串中的每个单词添加前缀

Man*_*hit 0 java regex string string-formatting string-prefix

我想为给定字符串中的每个单词添加前缀。我的代码是:-

StringBuilder strColsToReturns  = new StringBuilder();
String strPrefix                = "abc.";
strColsToReturns.append(String.format(" %sId, %sname, %stype,", strPrefix, strPrefix, strPrefix));
Run Code Online (Sandbox Code Playgroud)

对于小字符串,这很好,但我有一个像这样的非常大的静态字符串。因此,这种添加字符串前缀的方法看起来是一种乏味的方法。有没有其他复杂的方法来实现这一点。

Psh*_*emo 5

您可以使用replaceAll(regex, replacement). 作为正则表达式,我们可能想要选择具有

  • 空格或字符串开头
  • 和非空格之后。

(我们可以这里使用环视机制)

所以这样的事情应该有效:

String replaced = originalString.replaceAll("(?<=\\s|^)(?=\\S)", "abc.");
Run Code Online (Sandbox Code Playgroud)

但是,如果replacement可以包含$\字符,则需要使用\, 或Matcher.quoteReplacement(replacement)方法将它们转义。

String originalString = "foo bar baz";
String replaced = originalString.replaceAll("(?<=\\s|^)(?=\\S)", Matcher.quoteReplacement("abc."));
System.out.println(replaced);
Run Code Online (Sandbox Code Playgroud)

输出: abc.foo abc.bar abc.baz