我有一系列Unicode代码点.我真正需要做的是将这些代码点迭代为一系列字符,而不是一系列代码点,并确定每个字符的属性,例如是一个字母,无论如何.
例如,假设我正在编写一个支持Unicode的文本框,并且用户输入的Unicode字符不止一个代码点 - 例如,"e with diacritic".我知道这个特定字符也可以表示为一个代码点,并且可以归一化为该形式,但我不认为在一般情况下这是可能的.我怎么能实现退格?它显然不能只删除最后一个代码点,因为它们可能刚刚输入了多个代码点.
如何将一堆Unicode代码点作为字符进行迭代?
编辑:ICU提供的Break Iterators似乎是我所需要的.但是,我没有使用ICU,因此任何关于如何实现我自己的等效功能的参考都将是一个公认的答案.
另一个编辑:事实证明,Windows API确实提供了这种功能.MSDN将所有字符串函数放在一个地方并不是很好.CharNext是我正在寻找的功能.
如果不循环遍历整个Unicode字符范围,我如何获得具有给定属性的字符列表?特别是我想要一个包含所有数字字符的列表(即那些匹配的字符/\d/).我已经看过Unicode::UCD,它对于确定给定字符的属性很有用,但似乎没有办法获得具有该属性的列表字符.
我正在尝试使用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中替换字符串中的所有特殊控制字符.
我想问谷歌地图API v3,谷歌似乎并不喜欢这些字符.
示例:http://www.google.com/maps/api/geocode/json?sendor = false&address = NEWS%20YORK%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
UTS#18中描述了各种级别的Unicode正则表达式支持.
有没有办法对每个需求进行一些测试,因此可以将测试移植到相关语言,运行它们并收集结果?
其他Unicode文档是否也有支持级别的概念,例如String实现/库?
假设我想匹配一个小写字母后跟一个大写字母,我可以做类似的事情
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)
但这不起作用.
有线索吗?
我使用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}匹配这些全角字符?另外:还有另一种匹配这些角色的方法吗?
有正则表达式接受任何符号吗?
编辑:为了澄清我正在寻找..我想建立一个正则表达式将接受空格的任何数量和它必须至少含有一个符号(例如,"'$£等.)或(不异或)至少1个字符.
使用.Net Regex模式匹配C#标识符(特别是属性或字段名称)的正确方法是什么?
背景.我以前使用ASCII中心@"[_ a-zA-Z] [_ a-zA-Z0-9]*"但现在unicode大写和小写字符是合法的,例如"AboöДЖem".我应该如何将这些包含在模式中?
谢谢,马克斯
我有一个文件,file1.txt包含英文,中文,日文和韩文文本.为了在ConTeXt中使用,我需要根据语言标记文件中的每个文本区域(英语除外),并输出一个新文件,例如,这里是一个示例行:
The ?? ate ?.
Run Code Online (Sandbox Code Playgroud)
因为它包含中文字符的文本,所以这将标记为:
The \language[cn]{??} ate \language[cn]{?}.
Run Code Online (Sandbox Code Playgroud)
\language[cn]{*}.\language[ja]{*}.\language[ko]{*}.如何根据语言标记文本?