作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编辑我之前在循环中使用 if
条件编写的一些列表,但是如果文本文件超过大约 20 MB,它会显示 溢出。如果超过 1 MB,它会加载永远。例如
string[] x = File.ReadAllLines(openFileDialog1.FileName);
string a = "";
for (int i = 0; i < x.Length; i++)
{
if (x[i].Length > 9 && x[i] < 13)
{
a += "" + x[i] + "\r\n";
}
}
这只是一个示例,如果您知道可以帮助我的主题,请发布
最佳答案
从将 String
更改为 StringBuilder
开始:
string[] x = File.ReadAllLines(openFileDialog1.FileName);
StringBuilder sb = new StringBuilder();
//TODO: x[i] < 13 (taken from the question) seems to be erroneous
// Do you mean x[i].Length < 13?
for (int i = 0; i < x.Length; i++)
if (x[i].Length > 9 && x[i] < 13)
sb.AppendLine(x[i]);
string a = sb.ToString();
下一次尝试可以是 Linq,如下所示:
string a = string.Join(Environment.NewLine, File
.ReadLines(openFileDialog1.FileName)
.Where(line => line.Length > 9 && line.Length < 13));
当执行 a +=
时,您重新创建 a
string
(string
是不可变类,不能修改);在循环 中重新创建string
看起来慢得要死。 StringBuilder
就是专门为这种情况设计的类。
关于c# - 如何在 C# 中处理大文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860429/
我是一名优秀的程序员,十分优秀!