首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用“混合换行符类型”计数行号的算法

用“混合换行符类型”计数行号的算法
EN

Stack Overflow用户
提问于 2012-04-11 20:26:31
回答 1查看 222关注 0票数 4

我需要一个特定的描述(一个不会被正则表达式之类的东西太模糊的描述)。对于具有混合换行符的源文件可以计数的算法:

代码语言:javascript
复制
'\r', '\n', '\r\n', '\n\r'

我现在有以下算法。可以吗?:

  1. 我确保总是在第一个换行符的“边界”上。
  2. 在该事件中,我比较当前字节字符。

3.1。如果是'\n',我将其计算为结束当前行并启动一个新行。

3.2。如果是'\r',我将读取下一个字符(如果不是超出文本缓冲区的限制),并查看它是否为'\n‘。如果是的话,我把它算成‘\r’换行符。

3.3。如果它是'\r',并且下一个字符不是'\n',我将它计算为‘\r’生成的换行符;将当前行标记为and,并将其计数为新行的开始。

如果有用的话,我需要它尝试在跨web浏览器复制/粘贴的源文件上产生更好的“可移植性”,以及/或从具有不同类型的换行符的几个文件中添加更多的“可移植性”,并且我有解析工具,我想确保在所有情况下都有正确和健壮的行为。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 00:08:55

该算法应覆盖所有病例的99.999%。

您可能应该以二进制模式而不是文本模式读取源代码,以确保没有I/O层试图通过将其中的一些转换为'\n'来帮助您。

您没有指定您使用的是哪种语言。注意,在C和C++中,'\n'不同于其他转义字符,因为它不一定具有特定的值。的确,在大多数实现中,它将映射到ASCII的linefeed,但是使用'\x0A'这样的东西来保持代码的可移植性更安全、更明确。

有一些其他的新线路计划,但它们是极其罕见的。Unicode中有一个NEL字符,用于与最初在EBCDIC中的文件进行双向兼容性(我认为)。Unicode还引入了线分离器段落分隔符,您可能也希望将它们作为换行字符来处理。但是它们非常罕见,而且处理起来可能很复杂,因为它们超出了ASCII的范围,因此您需要知道您的编码,并准备好处理这些问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10113416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档