java regex用破折号替换特殊字符和空格

Cod*_*kie 1 java regex

我有以下字符串,

String model = "Town & Country";
Run Code Online (Sandbox Code Playgroud)

我想用破折号替换特殊字符和空格以及小写它是一个漂亮的干净网址.

"town-country"
Run Code Online (Sandbox Code Playgroud)

我试过以下代码.

"Town & Country".replaceAll("[^A-Za-z0-9]", "-").toLowerCase();
Run Code Online (Sandbox Code Playgroud)

但我最终得到了以下输出.

town---country
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我使用正则表达式,这样才能正常工作吗?如果有多个空格,我想把它减少到一个空格,用短划线代替.如果有一个很好的java库就是为了做到这一点,我会对它感兴趣,但是我不想使用它.

Ale*_*ing 7

你很接近,你只需要在表达式中添加一个量词就可以匹配多个字符.

/[^A-Za-z0-9]+/
Run Code Online (Sandbox Code Playgroud)

(注意+最后.)

所以,你的代码应该是这样的:

"Town & Country".replaceAll("[^A-Za-z0-9]+", "-").toLowerCase();
Run Code Online (Sandbox Code Playgroud)

regexr上的实例