如何在替换子字符串时避免重复替换字符

use*_*693 0 java replace

我在数据库中有以下字符串

**final test project - test decorations**
Run Code Online (Sandbox Code Playgroud)

我想用破折号(更换空格-字符).这是我到目前为止:

tit1 = rs.getString("title");
tit1 = tit1.replaceAll("\\s{1}", "-");
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

**final-test-project---test-decorations**
  **shadow-of-the-test----test**
Run Code Online (Sandbox Code Playgroud)

但我想要这样的输出

**final-test-project-test-decorations**
   **shadow-of-the-test-test**
Run Code Online (Sandbox Code Playgroud)

如何使替换忽略用空格包围的单个短划线?

How*_*ard 5

您可以使用以下行

tit1 = tit1.replaceAll("[\\s-]+", "-");
Run Code Online (Sandbox Code Playgroud)

而不是你的电话replaceAll.它将所有连续的空格与破折号一起使用,并用一个破折号替换它们.