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));