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

标签 c# string replace

这是字符串:

         str="[@PEYear]/ف/[@POOL]"

我想替换它,基于这个结构:

        if (str.Contains("[@PEYear]"))
            str = str.Replace("[@PEYear]", "1393");
        if (str.Contains("[@POOL]"))
            str = str.Replace("[@POOL]", "7");

结果是:1393/å/7

但我需要:1393,然后是 å,然后是 7(即使我不能在这里输入它 :P)

我该怎么做?

最佳答案

我将稍微扩展 Lucas 的回答。假设你有这个字符串:

String str = "1393" + "/" + "ف" + "/" + "&"

其中“&”=“7”,因为当有数字时,stackoverflow 编辑窗口会自动更正(尝试用 7 代替上面的 &)。计算结果为“1393/å/7”。

这是因为字符串连接函数一旦遇到从右到左的字符,就会将其余字符追加到该字符的左侧。所以,由于这个字符串有 8 个字符,并且第 6 个字符是 RTL,所以字符的顺序(如果从零开始)是 01234765。

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

String str = "1393" + "/" + "ف" + "\u200e" + "/" + "7"

计算为“1393/́/7”,这就是您想要的。因此,如果您按原样接收字符串,因此无法在代码中直接修改它,则可以使用 Substring 方法来操作传入的字符串以插入\u200e 字符。对于这个字符串:

str = str.Substring(0,6) + "\u200e" + str.Substring(6,2)

会成功的。

关于c# - 在 C# 中替换同时包含波斯语和英语字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098281/

相关文章:

c# - Linq - 仅当 != null 时获取第二个值

c# - IIS 中创建的线程能否通知其超时?

C++连接字符串问题

C# 表单初始化的良好风格

c# - 命名空间:使用 System 和使用 System.IO

c 程序正在编译和运行,但我在终端中得到一个奇怪的输出

c++ - 图像矩阵转字符串 OpenCV C++

javascript - 鼠标离开时工具提示文本突然添加到阿拉伯文本中

python - 仅当列中的特定值是唯一的时,如何替换它?

javascript - 匹配多个值并将重复值替换为一个值