我正在使用C#中的StringBuilder来添加一些文本,这些文本可以是英语(从左到右)或阿拉伯语(从右到左)。
stringBuilder.Append("(");
stringBuilder.Append(text);
stringBuilder.Append(") ");
stringBuilder.Append(text);
如果文本 = “A”,那么输出为“(A) A”。
但是如果文本 = “بتث”,那么输出为“(بتث) بتث”。
有什么想法吗?
我正在使用C#中的StringBuilder来添加一些文本,这些文本可以是英语(从左到右)或阿拉伯语(从右到左)。
stringBuilder.Append("(");
stringBuilder.Append(text);
stringBuilder.Append(") ");
stringBuilder.Append(text);
U+200F
或\u200f
在C#代码中。相反,如果您知道需要从左到右呈现,则使用从左到右的标记U+200E
。AppendFormat
代替仅使用Append
:stringBuilder.AppendFormat("({0}) {0}", text)
AppendFormat
本质上是Append(string.Format("{0}", text))
(我测试过Append(string.Format(""))
)。 - LukeHennerley我曾经遇到类似的问题,通过创建一个函数来检查 Unicode 中的每个字符,最终成功解决了。如果它是FE页中的字符,那么我会在其后添加202C。否则,我的预期是从右到左,但结果变成了混合的。
string us = string.Format("\uFE9E\u202C\uFE98\u202C\uFEB8\u202C\uFEC6\u202C\uFEEB\u202C\u0020\u0660\u0662\u0664\u0668 Aa1");