Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何替换特殊字符_C# - Fatal编程技术网

C# 如何替换特殊字符

C# 如何替换特殊字符,c#,C#,我得到了一个包含许多不同字符的字符串值 我想: 替换选项卡,输入,为空格 将阿拉伯语替换为波斯语 将阿拉伯语替换为波斯语 从字符串的两侧删除换行符 将多个空间替换为一个空间 修剪空间 以下功能用于清理数据。而且工作正常。 是否有人对更好的性能和更少的维护代码有任何想法:) 首先在字符串中查找字符,然后删除它,并在同一索引中添加新字符 private string ReplaceChars(string Source, string Find, string Replace) { int P

我得到了一个包含许多不同字符的字符串值
我想:

  • 替换选项卡,输入,空格
  • 将阿拉伯语替换为波斯语
  • 将阿拉伯语替换为波斯语
  • 从字符串的两侧删除换行符
  • 将多个空间替换为一个空间
  • 修剪空间
以下
功能
用于清理数据。而且工作正常。
是否有人对更好的性能和更少的维护代码有任何想法:)


首先在字符串中查找字符,然后删除它,并在同一索引中添加新字符

private string ReplaceChars(string Source, string Find, string Replace)
{
 int Place = Source.IndexOf(Find);
 string result = Source.Remove(Place, Find.Length).Insert(Place, Replace);
 return result;
} 
用法:

text= "كgeeks      01$سهيلاطريقي03.       اشك!@!!.ي";
var result =ReplaceChars(text,"ي","ی");

您可以使用两个列表进行重构:一个用于修剪过程,另一个用于替换过程

    var itemsTrimChars = new List<char>()
    {
      '\r',
      '\n'
    };

    var itemsReplaceStrings = new Dictionary<string, string>()
    {
      { "\n", "" },
      { "\r", " " },
      { "\u064A", "\u06CC" },
      { "\u0643", "\u06A9" },
      { "\u0009", "" }
    }.ToList();

对于要替换双空格的正则表达式,我一无所知,但是如果需要替换另一个双空格,可以创建第三个列表。

可以通过迭代每个字符并应用这些规则,形成一个新的输出字符串,这是您想要的格式。它应该比所有那些string.Replace和Regex.Match都快


在追加时使用字符串生成器提高性能,不要使用字符串+=string

是否运行过任何基准测试?@PavelAnikhouski你是什么意思?“因为我关心瓶颈”那么,你确定了瓶颈吗?不,我没有确定我的瓶颈@AhmedAbdelhameed@SoheilaTarighi我是说,这将只替换
Find
的一个实例,我假设目标是替换所有实例。你是对的,但仅用于帮助的代码需要更多增强,我只是指导或帮助回答问题如果你阅读文本,你会发现OP实际上知道如何操作。问题实际上是关于“是否有更好的性能和更少的维护代码的想法”。因此,你的答案与实际问题相差甚远。
    var itemsTrimChars = new List<char>()
    {
      '\r',
      '\n'
    };

    var itemsReplaceStrings = new Dictionary<string, string>()
    {
      { "\n", "" },
      { "\r", " " },
      { "\u064A", "\u06CC" },
      { "\u0643", "\u06A9" },
      { "\u0009", "" }
    }.ToList();
    itemsTrimChars.ForEach(c => output = output.Trim(c));

    itemsReplaceStrings.ForEach(p => output = output.Replace(p.Key, p.Value));