Csharp/C#教程:创建正确路径从左到右连接从右到左部分的问题分享


创建正确路径从左到右连接从右到左部分的问题

我已经在很大程度上简化了问题,这里是示例代码:

string outputString = string.Empty; string joinOutputString = string.Empty; string pathOutputString = string.Empty; string[] myStrings = new string[4]; myStrings[0] = "First entry"; myStrings[1] = "اول"; myStrings[2] = "دوم"; myStrings[3] = "Last entry"; StringBuilder sb = new StringBuilder(); for (int i = 0; i < myStrings.Length; i++) { joinOutputString = string.Join(@"", joinOutputString, myStrings[i]); outputString = string.Format(@"{0}{1}", outputString, myStrings[i]); pathOutputString = System.IO.Path.Combine(pathOutputString, myStrings[i]); sb.Append(string.Format(@"{0}", myStrings[i])); } 

循环结束时所有字符串和StringBuilder的最终值为:

第一次进入اولدوم最后一个条目

代替

第一次进入دوماول最后一个条目

中间的右到左部分被翻转为一个单元。

感谢您提前的时间。

您有一个bidi字符串(包含LTR和RTL字符的字符串),并且.NET在输出字符串时在LTR和RTL模式之间切换。 标点符号被认为是“弱”并继续使用当前活动的任何方向。 因此,您输出一个LTR字符串(“第一个条目”),后跟一串RTL字符(来自myString [1] + 3,来自myString [2]的3个字符串),后跟一个LTR字符串(“最后一个条目”)。

myString [0](打印LTR)然后myString [1](打印RTL)然后myString [2](打印RTL)然后myString [3](打印LTR)

请注意,整个中间字符串(由myString [1] +“”+ myString [2]组成)是打印的RTL,因此可以根据您的期望进行转换。 您可以添加伪强LTR标记(Unicode字符0x200E)以强制方向更改。

https://en.wikipedia.org/wiki/Bi-directional_text

在你的代码中:

 joinOutputString = string.Join("\x200E", joinOutputString, myStrings[i]); 

注意是一个转义 和 x200E是伪强LTR标记。

这样做会更容易

 System.IO.Path.Combine(myStrings); 

如果你想要创造一条道路。

上述就是C#学习教程:创建正确路径从左到右连接从右到左部分的问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/942207.html

(0)
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐