[英]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.