我有这个字符串:
http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard
我想删除'?'的第一个实例之间的所有内容以及'?'的第一个'#'实例。
我考虑过slice()一段时间,但我不认为那会削减它。所以小气。
谢谢!
答案 0 :(得分:5)
使用正则表达式:
var s = 'http://localhost:8080/Test/index.html?node=station:|slot:/gooberVille/Neverland/Hola#/overview/standard';
s = s.replace(/\?.*?#/, '');
?
是正则表达式中的特殊字符,因此要匹配文字?
,请使用反斜杠将其转义。 .
匹配任何字符,.*
匹配任意数字的任意数字(尽可能多),.*?
匹配任意数字的任意数字(尽可能少)。因此,/\?.*?#/
将从第一个?
开始匹配,然后匹配尽可能少的字符,直到找到#
。通过将此正则表达式的匹配替换为空字符串,您将获得所需的结果。
如果您想将#
保留在字符串中,只需将其更改为s.replace(/\?.*?#/, '#')
。
答案 1 :(得分:2)
正则表达式是您最好的选择
string = string.replace(/\?.*?#/, '');