2

これらの可能性のあるスラッグ文字列を持つことができます

my-post
my-post-2
my-post-2-3
my-post-2-3-4-5-6-7-8-9

this-is-my-post
this-is-my-post-2
this-is-my-post-2-3
this-is-my-post-2-3-4-5-6-7

abc-abc-abc1
abc-abc-abc1-2    
abc-abc-abc1-2-3-4-5-6

末尾に数字が付いていてもいなくてもかまいません。

私がやりたいことは、たとえば次のとおりです。

this-is-my-post-2-3

-2-3次に、末尾を に置き換え=2=3ます。したがって、次のようになります。

this-is-my-post=2=3

それで、linqまたは文字列解析などでそれを行うことができるきれいな方法はありますか?

4

2 に答える 2

9

正規表現を使用して文字列の末尾を特定し、通常の文字置換を行うことができます。

Regex.Replace(slug, @"[\d-]+$", m => m.Value.Replace('-', '='));

クイック PowerShell テスト:

PS> $strings | %{ [Regex]::Replace($_, '[\d-]+$', {$args[0].value.replace('-','=')}) }
my-post
my-post=2
my-post=2=3
my-post=2=3=4=5=6=7=8=9
this-is-my-post
this-is-my-post=2
this-is-my-post=2=3
this-is-my-post=2=3=4=5=6=7
abc-abc-abc
abc-abc-abc=2
abc-abc-abc=2=3=4=5=6
this-is-my-2nd-post
于 2012-05-22T11:13:42.587 に答える
3

正規表現を使用して、最後の数字を分離し、その中のダッシュを置き換えることができます。

Regex.Replace(s, @"(-\d+)+$", m => m.Value.Replace('-', '='))

例:

this-is-my-2nd-post        ->  this-is-my-2nd-post
this-is-my-2nd-post-1      ->  this-is-my-2nd-post=1
this-is-my-2nd-post-4-5-6  ->  this-is-my-2nd-post=4=5=6
于 2012-05-22T11:22:20.333 に答える