当前位置: 首页 > 编程语言 > C#

检测字符串中的CJK字符(C#)分享

时间:2023-04-10 23:22:21 C#

检测字符串中的CJK字符(C#)有时名称会插入到PDF的内容中。但我的问题是我需要插入的一些名称包含CJK字符(存储在SQLServer的nvarchar列中),据我所知,OpenSans目前不支持CJK字符。我需要继续使用OpenSans作为我的默认字体,所以理想情况下我想尝试检测从数据库中获取的字符串中的CJK字符,并在打印这些字符时切换到CJK字体。正则表达式是最好的选择吗?不幸的是,我找不到任何对此有帮助的正则表达式模式。在此先感谢您的帮助!使用iTextSharp.text.pdf.FontSelector;iTextSharp.text.pdf.FontSelector选择器=newiTextSharp.text.pdf.FontSelector();//添加2种字体到FontSelectorselector.AddFont(openSansfont);selector.AddFont(中文字体);iTextSharp.text.Phrasephrase=selector.Process(yourTxt);FontSelector将为您使用正确的字体!详细说明源文件FontSelector.cs。选择包含正确呈现文本所需的字形的适当字体。依次检查字体,直到找到字符。我忘了先搜索哪个命令了!请体验一下!编辑:顺序是从第一个addFont到最后一个addFont。http://itextpdf.com/examples/iia.php?id=214为了让任何人遇到这个问题,我发现了另一个使用正则表达式中列出的unicode块的问题(http://msdn.microsoft.com/zh-cn/library/20bw873z.aspx#SupportedNamedBlocks)。varName="JoeBloggs";varRegex=newRegex(@"p{IsCJKUnifiedIdeographs}");if(Regex.IsMatch(Name)){//switchtoCJKfont}else{//keepcalmandcarryon}编辑:你可能需要匹配的不仅仅是统一表意文字,试试这个作为正则表达式:stringr=@"p{IsHangulJamo}|"+@"p{IsCJKRadicalsSupplement}|"+@"p{IsCJKSymbolsandPunctuation}|"+@"p{IsEnclosedCJKLettersandMonths}|"+@"p{IsCJKCompatibility}|"+@"p{IsCJKUnifiedIdeographsExtensionA}|"+@"p{IsCJKUnifiedIdeographs}|"+@"p{IsHangulSyllables}|"+@"p{IsCJKCompatibilityForms}";这适用于我试过的所有韩语文本。好吧,我确实编辑了daves的答案以使其工作,但显然只有在同行评审之前我才能看到它,所以我会将解决方案作为我自己的答案发布。基本上Dave只需要将他的正则表达式扩展为:@"p{IsCJKCompatibility}|"+@"p{IsCJKUnifiedIdeographsExtensionA}|"+@"p{IsCJKUnifiedIdeographs}|"+@"p{IsHangulSyllables}|"+@"p{IsCJKCompatibilityForms}";使用时会检测韩文字符:以上是C#学习教程:检测字符串中的CJK字符(C#)的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注—stringsubject="???";匹配match=Regex.Match(subject,regex);if(match.Success){//换成韩文字体}else{//保持冷静,继续{本文摘自网络,不代表立场,如涉及侵权,请点击右转联系管理员删除。如需转载请注明出处: