C#: Как разделить арабский c текст и сохранить знак # в исходном положении - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь разбить арабский c текст на отдельные слова. Вот пример кода:

var str = "المادة 1 يولد جميع الناس أحرارًا متساوين في الكرامة والحقوق. وقد وهبوا عقلاً وضميرًا وعليهم أن يعامل بعضهم بعضًا بروح الإخاء.";
var strWithHashtag = "المادة 1 يولد جميع الناس أحرارًا متساوين في الكرامة والحقوق. وقد وهبوا عقلاً وضميرًا وعليهم أن #يعامل بعضهم بعضًا بروح الإخاء.";
var substrings = strWithHashtag.Split(' ');

Текст скопирован с https://r12a.github.io/scripts/arabic/, и это первый абзац под sample (arabi c) . У меня есть два вопроса:

  • Почему знак точки помещается в конце str, даже если он отображается как первый символ на веб-странице?
  • Когда я разделяю Строка в отдельные слова, يعامل# становится #يعامل. Как я могу сохранить исходное положение знака #? В конце концов мне нужно извлечь хэштеги из языков RTL, и поэтому мне нужно, чтобы # отображался как первый символ хэштега RTL.

1 Ответ

0 голосов
/ 25 февраля 2020

Почему знак точки помещается в конце str, даже если он отображается как первый символ на веб-странице?

Поскольку в среде IDE (например, Visual Studio) это вид слева направо (LTR), и вам нужно переключиться на Right-To-Left (RTL), чтобы показать его правильно. Так что не беспокойтесь о том, как он будет отображаться внутри кода, если он правильно отображается на странице RTL, то он находится в правильном положении.

Когда я разделяю строку на отдельные слова, يعامل# становится #يعامل. Как я могу сохранить исходное положение знака #? В конце концов мне нужно извлечь хэштеги из языков RTL, и поэтому мне нужно, чтобы # отображался как первый символ хэштега RTL.

То же самое здесь, правильным будет #يعامل, если если вы преобразуете его в представление RTL, хэштегом будет первый символ справа, который является правильной позицией в арабском c.

...