我想 trim 一个字符只重复一次的字符串

I want to trim a string in a way that a character will repeat only once

我正在 java 中制作一个程序,它从这个 JSON API https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=<RESOURCE ID TO BE INPUT[=19 得到 titlecurrent_version =]

它returns名字和版本,然后我用它来做一个link,link的格式很简单 https://www.spigotmc.org/resources/<TITLE>.<ID>/

很多时候都有效,但在某些情况下,例如标题返回为 ChristmasPresents | [1.7-1.16],他们页面的 link 是 https://www.spigotmc.org/resources/christmaspresents-1-7-1-16.39859/,所以我想做的是,trim 以某种方式,所有特殊字符都将 trimmed,但结果是这样的 https://spigotmc.org/resources/christmaspresents----1-7-1-16-.39859.

我怎样才能剪掉那些多余的-我只想要一个,(它可以在数字或字母后重复

谢谢

您似乎想用 - 替换所有特殊字符,但不想在输出中出现连续的 -。为此,您可以使用 replaceAll \W+-:

的正则表达式
var title = "ChristmasPresents | [1.7-1.16]";
title = title.replaceAll("\W+","-");
// "ChristmasPresents-1-7-1-16-"

请注意,这会在末尾添加一个 -,您可能不希望这样做。除非我遗漏了什么 String.strip 只会去掉空格,所以最简单的方法可能是先用单个空格替换特殊字符,然后 strip,然后用 - 替换空格:

title = title.toLowerCase().replaceAll("\W+"," ").strip().replace(" ", "-");
// "christmaspresents-1-7-1-16"