Мне нужно написать функцию, которая будет переворачивать все символы строки слева направо.
например:
Thė quiçk rown fox jum ovểr thë lzy ȡog.
должно стать
.goȡ yzⱥl ëht rểvo ᶁềṕmuj xof nworḇ kçiuq ėhT
я могу ограничить вопрос UTF-16 (который имеет те же проблемы, что и UTF-8, только реже).
Наивное решение может попытаться перевернуть все вещи (например, дословно, где слово 16-битное - я бы сказал байт за байтом , если бы мы могли предположить, что байт был 16-битным. Я мог бы также сказать символ в символ , где символ - это тип данных Char
, который представляет одну кодовую точку):
String original = "ɗỉf̴ḟếr̆ęnͥt";
String flipped = "";
foreach (Char c in s)
{
flipped = c+fipped;
}
Результаты в неверно перевернутом тексте:
f̴ḟếr̆ęnͥt
̨tͥnę̆rếḟ̴fỉɗ
Это потому, что один «символ» занимает несколько «кодовых точек».
f̴ḟếr̆ęnͥt
ɗ
ỉ
f
˜
ḟ
ế
r
˘
ę
n
i
t
˛
и переворачивание каждой «кодовой точки» дает:
˛
t
i
n
ę
˘
r
ế
ḟ
˜
f
ỉ
ɗ
Что не только не является допустимой кодировкой UTF-16, это не те же символы.
Проблема возникает в кодировке UTF-16, когда:
Те же проблемы возникают в кодировке UTF-8 с дополнительным регистром
я могу ограничиться более простой кодировкой UTF-16 (поскольку это кодировка, которую использует язык, который я использую (например, C #, Delphi)
Проблема, как мне кажется, заключается в том, чтобы определить, являются ли несколько последующих кодовых точек объединяющими символами и должны ли они идти вместе с базовым глифом.
Также интересно посмотреть онлайн-текст сайт reverser не принимает это во внимание.
Примечание:
- любое решение должно предполагать, что у него нет доступа к библиотеке кодировки UTF-32 (в основном потому, что у меня нет доступа ни к какому UTF- 32)
- доступ к библиотеке кодирования UTF-32 решит проблему языковых плоскостей UTF-8 / UTF-16, но не проблему объединения диакритических знаков
-121 --- 19196 06-
Как бы я сформулировал шаблон, чтобы извлечь XXXX-XX-XX вне метки времени?
Строка, которую я ищу в строке $, такая:
И я хочу извлечь часть:
XXXX-XX-XX
У меня есть это, но оно не работает:
preg_match('\";
Я нахожу регулярные выражения чертовски запутанными ... любая хорошая учебная рекомендация тоже будет отличной! Цените свое время и помощь.
Приветствую