这是字符串:
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)
我该怎么做?
答案 0 :(得分:5)
我会稍微谈谈卢卡斯的回答。假设你有这个字符串:
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)
会做到这一点。
答案 1 :(得分:4)
我不知道这个解决方案是否可以为您所接受,但是如果您插入left-to-right标记就可以了:
var str = "[@PEYear]/ف\u200E/[@POOL]";
这会强制字符串的其余部分从左到右。