我试过
string str1 = File.ReadAllText("D:\\this.txt");
str1.Length;
byte[] fileBytes = File.ReadAllBytes("D:\\this.txt");
fileBytes.Length;
走过similar question 但每次出现同样的问题时,它也会计算回车和新线 比如我的文件数据是
123
456
7
显示'11'但输出应为'7' 需要帮助 编辑:我想计算每个ASCII大于或等于32
的元素答案 0 :(得分:6)
您可以加载所有行,然后使用linq:
将每行的所有长度加在一起var numberOfCharacters = File.ReadAllLines(@"D:\this.txt").Sum(s => s.Length);
<强>替代强>
除空格或控件字符外,不计算空格。要求是模糊的,但应该让你走上正轨。
var numberOfCharacters = File.ReadAllText(@"D:\this.txt").
Count(c => c==" " ||
(!Char.IsControl(c) &&
!Char.IsWhiteSpace(c)));
答案 1 :(得分:1)
好的字符数总是(并且应该总是)计算不可见的字符,因为它们是仍然是字符。您可以在MSDN上查看what qualifies as a whitespace character并使用Replace。
我想要注意的是,虽然其他答案都有效,但他们忽略了回车和换行不是您将遇到的唯一不可见的空白字符这一事实。不同的操作系统将以不同的方式处理“输入”或“返回”。有些只有\n
,有些只有'\ r \ n'。