我想 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 得到 title
和 current_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"
我正在 java 中制作一个程序,它从这个 JSON API https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=<RESOURCE ID TO BE INPUT
[=19 得到 title
和 current_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"