Мне нужно написать функцию, которая будет переворачивать все символы строки слева направо.
например:
Thė quiçk rown fox jumṕềᶁ ovểr thë lⱥzy ȡ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-
Можно ли использовать преобразование XML-документа Microsoft для подготовки web.configs вне MSBuild? Я хотел бы использовать PowerShell для выполнения этих преобразований без необходимости запускать это через механизм MSBuild. Если бы Microsoft использовала стандартный XSLT, это было бы легко сделать в PowerShell.Насколько я могу судить, я должен использовать их C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll, для которого требуется механизм сборки. Спасибо