首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用c#断定一行的结束?

如何用c#断定一行的结束?
EN

Stack Overflow用户
提问于 2013-03-28 21:03:43
回答 2查看 163关注 0票数 3

我不知道行是以'\n‘或'\r’还是'\r\n‘结尾,也不知道文本是用什么编码的,而且如果编码是utf-8,它可能不是bom。有没有一个函数或lib可以做到这一点,或者直接告诉我一行的终止。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-28 21:22:34

你是否碰巧在一个打开阅读文本的文件上使用了fgetsfreadfputsfwrite等?如果是这样,该实现将自动转换特定于操作系统的行终止符(例如,"\r\n")读取时转换为'\n',写入时将'\n'转换为特定于操作系统的行终止符。

还有另外两种情况,其中一种是OP:

  1. OP正在为从其他操作系统软件中继承"\r\n"而苦苦挣扎,因此在他的(可能是类Unix的)操作系统中打开文件进行读取将不再转换这种情况。我的建议是使用dos2unix进行这些一次性的转换,而不是不使用这些函数就永远不会运行again.
  2. You're的东西使您的代码膨胀。这可能是因为您正在使用诸如套接字之类的流,并且该协议可能需要"\r\n"。在这种情况下,您应该使用strstr来查找确切的序列"\r\n".

UTF-8的设计考虑到了与ASCII的兼容性,因此您可以假定任何使用UTF-8的系统也将使用ASCII或一些类似的字符集。任何使用大于一个字节的序列的字符将仅使用0x80或更大的值来表示。由于'\n'位于0x00-0x7F范围内,因此可以保证它是单字节的,并且不会作为多字节字符的一部分存在。

票数 1
EN

Stack Overflow用户

发布于 2013-03-28 21:07:41

使用wcslen获取utf8字符串的字节大小。

http://linux.die.net/man/3/wcslen

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

https://stackoverflow.com/questions/15682570

复制
相关文章

相似问题

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