0

RTF ファイルに挿入する必要がある UTF キリル文字がいくつかあります。RTF ファイルは、\'00 または \u0000 を使用して、キリル文字をエスケープ シーケンスとして格納する傾向があります。

テキストは .NET なので、UTF-16 だと思います。具体例として、私はこのテキストを持っています"4 окт 2013"。OKT はキリル文字です。

® を例として使用すると、Unicode の 10 進数は 1086 で、UTF-8 の 10 進数は 208 190 です。

私がやりたいのは、ネイティブに認識できるため、RTFエスケープシーケンスに変換する必要があるこのような文字を認識する正規表現(.NET内)を用意することです。

このような文字の認識を支援するために、.NET で使用できる正規表現オプションは何ですか?

4

1 に答える 1

0

すべての非基本ラテン語に一致する正規表現を使用して、RTF Unicode エスケープ シーケンスに変換することができました。

const string RTFSpecialsInUTF = @"(\P{IsBasicLatin})";

private static Regex UTFSpecialRegex = new Regex(RTFSpecialsInUTF, RegexOptions.Compiled);

private static string ReplaceDirect(Match match) {
    int codepoint = (int)Convert.ToChar(match.Groups[1].Value);
    if (!(codepoint < 32768)) {
        codepoint = codepoint - 65536;
    }
        return string.Format("\\u{0}?", codepoint);
}

/* Usage */
value = UTFSpecialRegex.Replace(value, new MatchEvaluator(PDFDocumentRTF.ReplaceDirect));

これが Basic Latin や RTF にあまり適合しない他の言語 (アラビア語など) でも機能することを期待しています。

于 2013-10-04T07:31:45.963 に答える