У этого странного поведения есть объяснение. Цифры с символами Unicode рассматриваются как часть строки Unicode. и, поскольку ивритский язык читается справа налево, сценарий даст
string A = "\u05E9"; //A Hebrew letter
string B = "23";
string AB = A + B;
B
идет первым, затем следует A
.
второй сценарий:
string A = "\u20AA"; //Some random Unicode.
string B = "23";
string AB = A + B;
A
- это какой-то юникод, не является частью языка, который читается справа налево . поэтому вывод - сначала A
, а затем B
.
теперь рассмотрим мой собственный сценарий
string A = "\u05E9";
string B = "\u05EA";
string AB = A + B;
и A
, и B
являются частью права чтения слева направо, поэтому AB
- это B
, за которым следует A
. не A
, за которым следует B
.
отредактировано, чтобы ответить на комментарий
с учетом этого сценария -
string A = "\u05E9"; //A Hebrew letter
string B = "23";
string AB = A + B;
Единственное решение, чтобы получить букву, за которой следуют цифры, это: string AB = B + A;
, а не решение, которое будет работать в целом. Итак, я думаю, вам нужно реализовать некоторые условия проверки и построить строку в соответствии с требованиями.