Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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#_String - Fatal编程技术网

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”);这是用阿拉伯语写的,你知道乌尔都语的意思吗?这可能会有帮助