【发布时间】:2017-10-13 02:41:02
【问题描述】:
我目前有一个返回时看起来像这样的字符串:
//This is the url string
// the-great-debate---toilet-paper-over-or-under-the-roll
string name = string.Format("{0}",url);
name = Regex.Replace(name, "-", " ");
当我执行以下正则表达式操作时,它变成了这样:
the great debate toilet paper over or under the roll
但是,就像我在问题中提到的那样,我希望能够将正则表达式应用于 url 字符串,以便获得以下输出:-
the great debate - toilet paper over or under the roll
我非常感谢任何帮助。
[编辑] 然而,并不是所有的字符串都是这样的,其中一些只有一个连字符,所以上述方法有效
world-water-day-2016
它变成了
world water day 2016
但是对于这个:
the-great-debate---toilet-paper-over-or-under-the-roll
我需要一种方法来检查字符串是否有 3 个连字符,而不是用 [space][hyphen][space] 替换这 3 个连字符。而不是用空格替换单词之间所有剩余的单个连字符。
【问题讨论】:
-
Without regex:
url.Replace("---", "[ \uFFFD ]").Replace("-", " ").Replace("[ \uFFFD ]", " - ") -
啊,错过了你也想要单词之间的连字符。
-
您必须处理 2 个连字符还是超过 3 个连字符?
-
一个正则表达式:
Regex.Replace(s, @"-(-)-|-", m => m.Groups[1].Success ? " - " : " "). -
好的,所以一个 url 返回一个像这样的字符串:
world-water-day-2016或the-great-debate---toilet-paper-over-or-under