gpt4 book ai didi

c# - 替换 C# 中的字符 (ascii)

转载 作者:可可西里 更新时间:2023-11-01 09:17:26 25 4
gpt4 key购买 nike

我得到了一个包含以下字符的文件:à、è、ì、ò、ù - À。我需要做的是用普通字符替换这些字符,例如:à = a, è = e 等等......这是我目前的代码:

StreamWriter sw = new StreamWriter(@"C:/JoinerOutput.csv");
string path = @"C:/Joiner.csv";
string line = File.ReadAllText(path);

if (line.Contains("à"))
{
string asAscii = Encoding.ASCII.GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(Encoding.ASCII.EncodingName, new EncoderReplacementFallback("a"), new DecoderExceptionFallback()), Encoding.UTF8.GetBytes(line)));
Console.WriteLine(asAscii);
Console.ReadLine();

sw.WriteLine(asAscii);
sw.Flush();
}

基本上,这会在文件中搜索特定字符并将其替换为另一个字符。我遇到的问题是我的 if 语句不起作用。我该如何解决这个问题?

这是输入文件的示例:

Dimàkàtso MokgàloMàmà RàtlàdiKoos NèlPàsèkà ModisèJèrèmiàh MorèmiKhèthiwè ButhèlèziTiànà PillàyViviàn MàswàngànyèThirèshàn RèddyWàdè Cornèliusènos Nètshimbupfè

这是输出如果使用:line = line.Replace('à', 'a'); :

Ch�rl�n� Kirst�nM�m� R�tl�diKoos N�lP�s�k� Modis�J�r�mi�h Mor�miKh�thiw� Buth�l�ziTi�n� Pill�yVivi�n M�sw�ng�ny�Thir�sh�n R�ddyW�d� Corn�lius�nos N�tshimbupf�

使用我的代码,符号将被完全删除

最佳答案

其他人评论了使用 Unicode 查找表来删除变音符号。我做了一个快速的谷歌搜索并找到了 this example .代码无耻地复制(重新格式化)并发布在下面:

using System;
using System.Text;
using System.Globalization;

public static class Remove
{
public static string RemoveDiacritics(string stIn)
{
string stFormD = stIn.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();

for(int ich = 0; ich < stFormD.Length; ich++) {
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
if(uc != UnicodeCategory.NonSpacingMark) {
sb.Append(stFormD[ich]);
}
}

return(sb.ToString().Normalize(NormalizationForm.FormC));
}
}

因此,您的代码可以通过调用以下方法清理输入:

line = Remove.RemoveDiacritics(line);

关于c# - 替换 C# 中的字符 (ascii),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com