在String.Join()-C#.NET之后,包含英语和希伯来语字母的字符串变得一团糟



我有一个同时包含英语和希伯来语字符的字符串:
"Hitachi - היטצ'י:Hitachi – cartel CRT"

第一步:翻转由:分隔的两个部分
预期结果:"Hitachi – cartel CRT:Hitachi - היטצ'י"

下一步:我想连接以下文本:":אגם:עץ תיוק"
最终预期结果:"Hitachi - cartel CRT:Hitachi - אגם:עץ תיוק:היטצ'י"

实际结果:"Hitachi – cartel CRT:Hitachi - היטצ'י:אגם:עץ תיוק"

这是我当前的代码:

string path = "Hitachi - היטצ'י:Hitachi – cartel CRT";
string[] splittedByColonPath = path.Split(':');
Array.Reverse(splittedByColonPath);
List<string> list = new List<string>(splittedByColonPath);
list.Add("אגם:עץ תיוק:");            
string result = String.Join(":", list.ToArray());

关于如何以正确的方式重新安排它,有什么想法吗?

String.Join运行良好,字符串正是您想要的,由于希伯来语主要是从右到左的,这意味着短语中的第一个单词出现在右边。

根据您想要实现的目标,这可能很好(例如,如果您将其传递给另一个程序,该程序需要用冒号分隔数据-在这种情况下,字符串可能看起来错误,但其他程序会很好地解释它(。但是,如果你想让它看起来像你期望的那样,你必须强制显示算法将冒号视为从左到右。您可以通过将代码更改为来做到这一点

string result = String.Join("u200e:"), list.ToArray());

u200e是一个从左到右的标记(LRM(,它使任何相邻的标点符号都被视为从左到左。

这样做的缺点是,任何其他解释数据的程序都可能不会期望LRM,并且可能会被它混淆

最新更新