我有一些UTF西里尔文字,需要插入RTF文件。RTF文件倾向于使用\'00或\u0000将西里尔文本存储为转义序列。
因为文本是用.NET写的,我猜是UTF-16。作为一个具体的例子,我有这个文本"4 окт 2013"
。奥特是西里尔的文字。
以о为例,Unicode十进制为1086,UTF-8小数点为208190。
我想做的是让Regex (在.NET中)识别像这样的字符,这些字符需要转换成RTF转义序列,因为它们可以被本地识别。
在.NET中有哪些Regex选项可以帮助识别这样的字符?
发布于 2013-10-04 07:31:45
我能够使用匹配所有非基本拉丁语的Regex,并转换为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));
让我的手指祈祷,这将工作的其他语言,不适合基本拉丁语和RTF非常好(如阿拉伯语)。
https://stackoverflow.com/questions/19174872
复制相似问题