将最后一个字符替换为字符
本文关键字:字符 替换 最后一个 | 更新日期: 2023-09-27 18:35:01
我可以有这些可能的 slug 字符串
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 中或通过一些字符串解析或其他方式做到这一点呢?
您可以使用正则表达式找出字符串的末尾,然后执行字符的正常替换:
Regex.Replace(slug, @"['d-]+$", m => m.Value.Replace('-', '='));
快速电源外壳测试:
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
您可以使用正则表达式隔离末尾的数字,并替换其中的短划线:
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