标签: character-properties

逐个字符地迭代Unicode代码点

我有一系列Unicode代码点.我真正需要做的是将这些代码点迭代为一系列字符,而不是一系列代码点,并确定每个字符的属性,例如是一个字母,无论如何.

例如,假设我正在编写一个支持Unicode的文本框,并且用户输入的Unicode字符不止一个代码点 - 例如,"e with diacritic".我知道这个特定字符也可以表示为一个代码点,并且可以归一化为该形式,但我不认为在一般情况下这是可能的.我怎么能实现退格?它显然不能只删除最后一个代码点,因为它们可能刚刚输入了多个代码点.

如何将一堆Unicode代码点作为字符进行迭代?

编辑:ICU提供的Break Iterators似乎是我所需要的.但是,我没有使用ICU,因此任何关于如何实现我自己的等效功能的参考都将是一个公认的答案.

另一个编辑:事实证明,Windows API确实提供了这种功能.MSDN将所有字符串函数放在一个地方并不是很好.CharNext是我正在寻找的功能.

c++ unicode character-properties

7
推荐指数
1
解决办法
1985
查看次数

如何获取具有给定属性的所有Unicode字符的列表?

如果不循环遍历整个Unicode字符范围,我如何获得具有给定属性的字符列表?特别是我想要一个包含所有数字字符的列表(即那些匹配的字符/\d/).我已经看过Unicode::UCD,它对于确定给定字符的属性很有用,但似乎没有办法获得具有该属性的列表字符.

unicode perl character-properties

6
推荐指数
1
解决办法
1328
查看次数

在Java正则表达式中匹配Unicode虚线?

我正在尝试使用Pattern.split()将Java正则表达式分解为"foo"和"bar"." - "字符可能是几个短划线之一:ASCII' - ',em-dash,en-dash等.我构造了以下正则表达式:

private static final Pattern titleSegmentSeparator = Pattern.compile("\\s(\\x45|\\u8211|\\u8212|\\u8213|\\u8214)\\s");
Run Code Online (Sandbox Code Playgroud)

如果我正确地阅读Pattern文档,那么当两边都被空格包围时,它应该捕获任何unicode破折号或ascii破折号.我使用的模式如下:

String[] sectionSegments = titleSegmentSeparator.split(sectionTitle);
Run Code Online (Sandbox Code Playgroud)

没有快乐.对于下面的示例输入,未检测到破折号,titleSegmentSeparator.matcher(sectionTitle).find()返回false!

为了确保我没有遗漏任何不寻常的字符实体,我使用System.out打印一些调试信息.输出如下 - 每个字符后跟(int)char的输出,它应该是它的'unicode代码点,不是吗?

样本输入:

研究摘要(1/10) - 竞争

S(83)t(116)u(117)d(100)y(121)(32)S(83)u(117)m(109)m(109)a(97)r(114)y(121) )(32)((40)1(49)(32)o(111)f(102)(32)1(49)0(48))(41)(32) - (8211)(32)C( 67)O(111)M(109)p(112)E(101)T(116)I(105)T(116)1(105)○(111)N(110)

在我看来,破折号是代码点8211,它应该与正则表达式匹配,但事实并非如此!这里发生了什么?

java regex unicode character-properties

6
推荐指数
1
解决办法
6338
查看次数

替换Unicode控制字符

我需要在Java中替换字符串中的所有特殊控制字符.

我想问谷歌地图API v3,谷歌似乎并不喜欢这些字符.

示例:http://www.google.com/maps/api/geocode/json?sendor = false&address = NEWS%20YO​​RK%C2%8F

此URL包含以下字符:http://www.fileformat.info/info/unicode/char/008f/index.htm

所以我收到了一些数据,我需要对这些数据进行地理编码.我知道有些角色不会通过地理编码,但我不知道确切的列表.

我是不是能够找到的有关这个问题的任何文件,所以我认为谷歌不喜欢的字符的列表是这一个: http://www.fileformat.info/info/unicode/category/Cc/list.htm

是否有任何已构建的函数来摆脱这些字符,或者我必须构建一个新的,逐个替换?

或者有一个很好的正则表达式完成工作?

有人知道谷歌不喜欢哪个角色列表?

编辑:Google为此创建了一个网页:

https://developers.google.com/maps/documentation/webservices/?hl=fr#BuildingURLs

java regex unicode google-maps character-properties

6
推荐指数
1
解决办法
1万
查看次数

如何检查哪种语言支持Unicode正则表达式中的哪个支持级别?

UTS#18中描述了各种级别的Unicode正则表达式支持.

有没有办法对每个需求进行一些测试,因此可以将测试移植到相关语言,运行它们并收集结果?

其他Unicode文档是否也有支持级别的概念,例如String实现/库?

regex language-agnostic string unicode character-properties

6
推荐指数
1
解决办法
306
查看次数

在Python中使用正则表达式匹配区分大小写的unicode字符串

假设我想匹配一个小写字母后跟一个大写字母,我可以做类似的事情

re.compile(r"[a-z][A-Z]")
Run Code Online (Sandbox Code Playgroud)

现在我想对unicode字符串做同样的事情,即匹配'aÅ'或'yÜ'之类的东西.

试着

re.compile(r"[a-z][A-Z]", re.UNICODE)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

有线索吗?

python regex unicode case-insensitive character-properties

6
推荐指数
1
解决办法
1224
查看次数

Perl:如何匹配FULLWIDTH LATIN SMALL

我使用listadmin来管理许多基于邮件的邮件列表.我有很长的主题列表和设置阻止垃圾邮件的地址.最近,我收到了更聪明的垃圾邮件,因为它使用了漂亮的Unicode字符,例如:

主题:您已经看到了很多内容,我们的exx x n汇编了13,000个高清视频,您现在可以随意使用!

要么

主题:高清视频和图像显示图表
是否适用于此

现在我想用一个聪明的Perl正则表达式来阻止它.将这些主题用于hexdump显示许多字符是一个完整的拉丁文小写字母.但是,\p{FULLWIDTH LATIN SMALL LETTER}不起作用:Can't find Unicode property definition "FULLWIDTH LATIN SMALL LETTER"

所以问题是:是否有\p{something}匹配这些全角字符?另外:还有另一种匹配这些角色的方法吗?

regex unicode perl character-properties

6
推荐指数
1
解决办法
801
查看次数

任何符号的Java正则表达式?

有正则表达式接受任何符号吗?

编辑:为了澄清我正在寻找..我想建立一个正则表达式将接受空格的任何数量和它必须至少含有一个符号(例如,"'$£等.)或(不异或)至少1个字符.

java regex unicode character-properties

5
推荐指数
1
解决办法
1万
查看次数

使用Regex匹配C#Unicode标识符

使用.Net Regex模式匹配C#标识符(特别是属性或字段名称)的正确方法是什么?

背景.我以前使用ASCII中心@"[_ a-zA-Z] [_ a-zA-Z0-9]*"但现在unicode大写和小写字符是合法的,例如"AboöДЖem".我应该如何将这些包含在模式中?

谢谢,马克斯

c# regex unicode character-properties

5
推荐指数
3
解决办法
5860
查看次数

如何在文档中标记所有CJK文本?

我有一个文件,file1.txt包含英文,中文,日文和韩文文本.为了在ConTeXt中使用,我需要根据语言标记文件中的每个文本区域(英语除外),并输出一个新文件,例如,这里是一个示例行:

The ?? ate ?.
Run Code Online (Sandbox Code Playgroud)

因为它包含中文字符的文本,所以这将标记为:

The \language[cn]{??} ate \language[cn]{?}.
Run Code Online (Sandbox Code Playgroud)
  • 该文档保存为UTF-8.
  • 应标明中文文字\language[cn]{*}.
  • 应标记日语文本\language[ja]{*}.
  • 应标记韩文文本\language[ko]{*}.
  • 内容永远不会从一行继续到下一行.
  • 如果代码对某些东西是中文,日文还是韩文有疑问,最好是默认为中文.

如何根据语言标记文本?

unicode multilingual cjk character-properties

5
推荐指数
2
解决办法
434
查看次数