![](/img/trans.png)
[英]How do I represent a Unicode character in a literal string ISO/ANSI C when the character set is ASCII?
[英]How do I check if a character is a Unicode new-line character (not only ASCII) in Rust?
每种编程语言都有自己对\\n
和\\r
\\n
的解释。 Unicode支持可以表示新行的多个字符。
从Rust参考 :
空白转义是字符U + 006E(n),U + 0072(r)或U + 0074(t)之一,表示Unicode值U + 000A(LF),U + 000D(CR)或U + 0009(HT)。
基于该语句,我会说如果是\\n
或\\r
,则Rust字符是换行符。 在Windows上,它可能是\\r
和\\n
的组合。 我不确定。
以下怎么样?
在我看来,我们缺少像char.is_new_line()
这样的东西。 我查看了Unicode字符类别,但找不到新行的定义。
我是否必须提出自己对Unicode换行符的定义?
Java,Python,Go和JavaScript等语言之间存在相当大的实际分歧,即构成换行符的内容以及转换为“新行”的方式。 包含电池的正则表达式引擎如何在多行模式下对像\\r\\r\\n\\n
字符串这样的字符串处理类似$
模式表明了分歧:是否有两行( \\r\\r\\n
, \\n
) ,三行( \\r
, \\r\\n
, \\n
,像Unicode说的那样)或四行( \\r
, \\r
, \\n
, \\n
,就像JS看到的那样)? Go和Python不会将\\r\\n
视为单个$
,Rust的正则表达式也不会; 然而,Java确实如此。 我不知道任何语言的电池将换行处理扩展到任何更多的Unicode字符。
所以这里的内容是
\\n
是换行符 \\r\\n
可能是一个换行符 \\r\\n
被视为两个换行符 \\r\\n
是“某个字符后跟换行符” 如果您确实需要将更多Unicode字符视为换行符,则必须定义一个为您执行此操作的函数。 不要指望期望的真实世界输入。 毕竟,我们有很多年的ASCII记录分隔符,而且每个人都使用\\t
来代替。
更新:请参阅http://www.unicode.org/reports/tr14/tr14-32.html#BreakingRules部分LB5
了解为什么\\r\\r\\n
应被视为两个换行符。 您可以阅读整页以了解原始问题的实施方式。 我的猜测是你到达“ 东南亚:换行需要形态分析 ”你将关闭标签:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.