gpt4 book ai didi

c# - 检测字符串中的 CJK 字符 (C#)

转载 作者:太空狗 更新时间:2023-10-29 21:02:02 24 4
gpt4 key购买 nike

我正在使用 iTextSharp 生成一系列 PDF,使用 Open Sans 作为默认字体。有时,名称会插入到 PDF 的内容中。但是我的问题是我需要插入的一些名称包含 CJK 字符(存储在 SQL Server 的 nvarchar 列中),据我所知,Open Sans 目前不支持 CJK 字符。我需要继续使用 Open Sans 作为我的默认字体,因此理想情况下,我想尝试检测从数据库中抓取的字符串中的 CJK 字符,并在打印这些字符时切换到 CJK 字体。

正则表达式是最好的选择吗?不幸的是,我还没有找到任何有助于解决此问题的正则表达式模式。

在此先感谢您的帮助!

最佳答案

为了防止有人偶然发现这个问题,我找到了另一种解决方案,使用正则表达式中列出的 unicode block (http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedNamedBlocks)。

var Name = "Joe Bloggs";
var Regex = new Regex(@"\p{IsCJKUnifiedIdeographs}");

if(Regex.IsMatch(Name))
{
//switch to CJK font
}
else
{
//keep calm and carry on
}

编辑:

您可能需要匹配的不仅仅是统一表意文字,请尝试将其用作正则表达式:

string r = 
@"\p{IsHangulJamo}|"+
@"\p{IsCJKRadicalsSupplement}|"+
@"\p{IsCJKSymbolsandPunctuation}|"+
@"\p{IsEnclosedCJKLettersandMonths}|"+
@"\p{IsCJKCompatibility}|"+
@"\p{IsCJKUnifiedIdeographsExtensionA}|"+
@"\p{IsCJKUnifiedIdeographs}|"+
@"\p{IsHangulSyllables}|"+
@"\p{IsCJKCompatibilityForms}";

这适用于我试过的所有韩语文本。

关于c# - 检测字符串中的 CJK 字符 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16415074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com