ili*_*ica 5 c# regex string replace
我想使用此方法来创建用户友好的URL.因为我的网站是克罗地亚语,有些字符我不想剥离,而是用另一个替换它们.例如,这个字符串:
ŠĐĆŽšđčćž
需要是:sdccz-sdccz
所以,我想制作两个数组,一个包含要替换的字符,另一个数组包含替换字符:
string[] character = { "Š", "?", "?", "?", "Ž", "š", "?", "?", "?", "ž" };
string[] characterReplace = { "s", "d", "c", "c", "z", "s", "d", "c", "c", "z" };
Run Code Online (Sandbox Code Playgroud)
最后,这两个数组应该在一些方法中使用,它将获取字符串,查找匹配并替换它们.在php中我用preg_replace函数来处理这个问题.在C#中,这不起作用:
s = Regex.Replace(s, character, characterReplace);
Run Code Online (Sandbox Code Playgroud)
如果有人能提供帮助,我将不胜 谢谢
Jos*_*ola 14
Jon Skeet 在新闻组中提到了以下代码 ......
static string RemoveAccents (string input)
{
string normalized = input.Normalize(NormalizationForm.FormKD);
Encoding removal = Encoding.GetEncoding(Encoding.ASCII.CodePage,
new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] bytes = removal.GetBytes(normalized);
return Encoding.ASCII.GetString(bytes);
}
Run Code Online (Sandbox Code Playgroud)
编辑
也许我很疯狂,但我只是跑了以下......
Dim Input As String = "Š??Ž-š???ž"
Dim Builder As New StringBuilder()
For Each Chr As Char In Input
Builder.Append(Chr)
Next
Console.Write(Builder.ToString())
Run Code Online (Sandbox Code Playgroud)
输出是 SDCZ-sdccz
Mar*_*ers 13
看来你想剥掉变音符号并留下基本字符.我在这里推荐Ben Lings的解决方案:
string input = "Š??Ž š???ž";
string decomposed = input.Normalize(NormalizationForm.FormD);
char[] filtered = decomposed
.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
.ToArray();
string newString = new String(filtered);
Run Code Online (Sandbox Code Playgroud)
编辑:轻微的问题!它不适用于Đ.结果是:
S?CZ s?ccz
Run Code Online (Sandbox Code Playgroud)