C# 如何读取字符串中的每个字符并替换为乌尔都语字符
对于一个完全不同的问题,这是一种不同的方法 不是阿拉伯语,是乌尔都语。不是日期时间,是字符串 我想读取字符串中的每个字符,并将其替换为乌尔都语字符 例如:C# 如何读取字符串中的每个字符并替换为乌尔都语字符,c#,string,C#,String,对于一个完全不同的问题,这是一种不同的方法 不是阿拉伯语,是乌尔都语。不是日期时间,是字符串 我想读取字符串中的每个字符,并将其替换为乌尔都语字符 例如: string amount = "100"; 我想读每个字符串 如果是1,则应将其替换为乌尔都语字符١ 如果为0,则应将其替换为乌尔都语字符٠ 最终的结果将是£٠٠ 我如何分解它,我试着使用它: var output = ""; foreach (char c in str) { if (c == 1) {
string amount = "100";
我想读每个字符串
如果是1,则应将其替换为乌尔都语字符١如果为0,则应将其替换为乌尔都语字符٠ 最终的结果将是£٠٠ 我如何分解它,我试着使用它:
var output = "";
foreach (char c in str)
{
if (c == 1)
{
output = "١";
}
output += c;
}
我还想连接字符。因为
c
是一个字符,那么你的条件应该是如果(c=='1')
我建议使用字典
进行替换<代码>字符串.Concat用于连接:
Dictionary<char, char> urdu = new Dictionary<char, char>() {
{'0', '١'},
{'1', '٠'},
//TODO: add other pairs here
};
...
string source = "100";
char u;
string result = string.Concat(source.Select(c => urdu.TryGetValue(c, out u) ? u : c));
字典乌尔都语=新字典(){
{'0', '١'},
{'1', '٠'},
//TODO:在此处添加其他对
};
...
字符串source=“100”;
char u;
stringresult=string.Concat(source.Select(c=>urdu.TryGetValue(c,out-u)?u:c));
与每次使用此功能时都编写代码不同,我更喜欢调用重复替换输入字符串的扩展方法,就像在中所做的那样,此实现有什么问题?或者你只是想问一个更好的方法?使用chained.Replace(“旧”、“新”)
,因为你只有10个数字。var output=str.Replace(“1”、“£”)。Replace(“0”、“٠”)代码>当前代码的一个问题是output=“١”代码>正在覆盖,而不是连接。因为c
是一个字符,那么您的条件应该是c=='1'
这行:如果(c==1)
比较字符的UTF-16代码是否等于1。看一下@FirstStep answer我觉得这个很简单,你觉得怎么样<代码>var输出=str.Replace(“1”,“١”)。Replace(“0”,“٠”)代码>@Patrick:如果你只有两个字符可以替换,这很容易。你有什么可能用'0'..'9'
(十个)和A
。Z
来代替?如果我用0-9个字符代替,那么写1500就可以了。或者写任何9831238都会给我这些字符,很简单,谢谢你的回答。这种方法也很有效,因为除了这个和@jonesopolis给出的评论中没有正确的答案,我选择这个作为正确答案。我也想将日期时间转换为乌尔都语日期时间字符,但如果我找不到的话,这是另一个stackoverflow问题。Use可以使用DateTime.Now.ToString(“ddddd,MMMM,yyyy”,new CultureInfo(“ar AE”);这是用阿拉伯语写的,你知道乌尔都语的意思吗?这可能会有帮助