在C#中替换包含波斯语和英语字母的字符串

Ala*_* sa 3 c# string replace

这是字符串:

         str="[@PEYear]/?/[@POOL]"
Run Code Online (Sandbox Code Playgroud)

我想根据这个结构替换它:

        if (str.Contains("[@PEYear]"))
            str = str.Replace("[@PEYear]", "1393");
        if (str.Contains("[@POOL]"))
            str = str.Replace("[@POOL]", "7");
Run Code Online (Sandbox Code Playgroud)

其结果是:1393 /ف/ 7

但我需要:1393然后是ف然后是7(即使我不能在这里打字:P)

我怎样才能做到这一点?

Bob*_*des 5

我将稍微扩展卢卡斯的答案.假设你有这个字符串:

String str = "1393" + "/" + "?" + "/" + "&"
Run Code Online (Sandbox Code Playgroud)

其中"&"="7",因为stackoverflow编辑窗口在有数字时自动修正(尝试用7替换上面的&).评估结果为"1393 /ف/ 7".

这是因为字符串连接功能一遇到从右到左的字符,就会将其余字符附加到此字符的左侧.因此,由于此字符串有8个字符,第6个字符是RTL,因此字符是有序的(如果从零开始)01234765.

现在这个(注意我现在可以输入7而不会被自动修正):

String str = "1393" + "/" + "?" + "\u200e" + "/" + "7"
Run Code Online (Sandbox Code Playgroud)

评估为"1393 /ف/ 7",这是你想要的.因此,如果您正在接收字符串,因此无法直接在代码中修改它,则可以使用Substring方法操作传入字符串以插入\ u200e字符.在这个字符串的情况下:

str = str.Substring(0,6) + "\u200e" + str.Substring(6,2)
Run Code Online (Sandbox Code Playgroud)

会做的.