У вас есть строка двунаправленного текста (строка, содержащая и символы LTR, и символы RTL), и .NET переключается между режимами LTR и RTL при выводе строки.Пунктуация считается «слабой» и продолжает использовать то направление, которое в данный момент активно.Таким образом, вы выводите строку LTR («Первая запись»), за которой следует строка символов RTL (3 из myString [1] + «\» + 3 из myString [2]), за которой следует строка LTR («Последняя запись»).
myString [0] (печатный LTR), затем myString [1] (печатный RTL), затем myString [2] (печатный RTL), затем myString [3] (печатный LTR)
Обратите внимание, чтовся средняя строка (составленная из myString [1] + "\" + myString [2]) печатается RTL и, следовательно, транспонируется от вашего ожидания.Вы можете добавить псевдо-сильную метку LTR (символ Unicode 0x200E) для принудительного изменения направления.
http://en.wikipedia.org/wiki/Bi-directional_text
В вашем коде:
joinOutputString = string.Join("\\\x200E", joinOutputString, myStrings[i]);
Обратите внимание на\ - это экранированный символ \, а \ x200E - псевдосильная метка LTR.