我想更改项目的标题以在javascript中的url中显示,因为我需要将空格更改为破折号-但我的某些标题已经有了-因此,如果已经有则请避免破折号 例如 这是我的标题,是一个字符串
2008 - 2009 PEUGEOT
我想要这样
2008-2009-PEUGOT
答案 0 :(得分:1)
string.replace(" - ", "-").replace(" ", "-")
首先将space-space
的任何实例替换为-
,然后将space
的任何实例替换为-
答案 1 :(得分:1)
如果您需要一个更健壮的解决方案,尽管存在多少空白或有多少破折号,该解决方案仍然有效,您可以使用以下代码:
string.replace(/( *- *)+/g, '-').replace(/ +/g, '-');
这会将破折号与它们周围的任意空间匹配,并用破折号代替它们。
然后,它匹配所有剩余的空白,并用破折号代替。
let strings = [
'2008 - 2009 PEUGEOT',
'2008 - 2009 PEUGEOT',
'2008- 2009 -PEUGEOT',
'2008 -- 2009-- - ---PEUGEOT',
'2008 -- --- 2009 - - ---- - PEUGEOT',
'2008-2009-PEUGEOT'
];
strings.forEach(string => {
const result = string.replace(/( *- *)+/g, '-').replace(/ +/g, '-');
console.log(result);
});
我创建了多个其他解决方案,它们似乎以相对相同的速度工作。 可通过jsPerf 获得基准。
string.replace(/ /g, '-').replace(/-+/g, '-');
string.replace(/ /g, '-').replace(/-{2,}/g, '-');
string.replace(/ +/g, '-').replace(/-+/g, '-');
string.replace(/ +/g, '-').replace(/-{2,}/g, '-');
答案 2 :(得分:0)
使用正则表达式,它也可以处理-前面或后面的多个空格:
(?<!([-\s]))\s+(?!(\s*[-$]))
查找所有需要替换为-的空白 之后,您可以使用
删除所有其他空格string.replace(" ", "")
答案 3 :(得分:0)
必须对所有字符串进行更改,上面的答案只是在第一个破折号和空格中进行替换
string.replace(/ - /g, "-").replace(/ /g , "-")
这对我有用