我正在阅读文本文件并将其拆分为分界点。在:之前的一切都是左边的值,后面的一切都是正确的。通过这些行的最佳循环是什么,并将字符串值存储到2个列表中,左侧和右侧?我不需要它们输出,只需将值存储在列表中。
namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
id newId = new id();
newId.Left = "";
id newId2 = new id();
newId2.Right = "";
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
of.ShowDialog();
textBox1.Text = of.FileName;
using (StreamReader sr = new StreamReader(of.FileName));
string content = File.ReadAllText(of.FileName);
string[] split = content.Split(';' , ':');
foreach (string segment in split)
{
if
}
}
答案 0 :(得分:0)
对于您提供的内容,foreach
可以做得很好。
至于如何存储它们,这完全取决于你需要用它们做什么。如果&#34;左边的项目&#34;都是独一无二的,你可以制作一本字典,其中&#34; left&#34;是关键,&#34;对&#34;是价值。这很容易使用。否则,如果&#34; left&#34;不是唯一的,您可以有一个元组列表(List<Tuple<string,string>>
)或KeyValuePairs(List<KeyValuePair<string,string>>
)。
答案 1 :(得分:0)
这应该有效。不知道你最后是否想要分号,所以我就把它删除了。
var left = new List<string>();
var right = new List<string>();
using (var diag = new OpenFileDialog()) {
if (diag.ShowDialog() == DialogResult.OK) {
using (var sr = new StreamReader(diag.FileName)) {
string line;
while ((line = sr.ReadLine()) != null) {
var split = line.Replace(";", "").Split(':');
if (split[0] != null && split[1] != null) {
left.Add(split[0]);
right.Add(split[1]);
}
}
}
}
}
我注意到你提到这是一个关键/有价值的事情所以我实际上会这样做:
var dict = new Dictionary<string, string>();
using (var diag = new OpenFileDialog()) {
if (diag.ShowDialog() == DialogResult.OK) {
using (var sr = new StreamReader(diag.FileName)) {
string line;
while ((line = sr.ReadLine()) != null) {
var split = line.Replace(";", "").Split(':');
if (split[0] != null && split[1] != null)
dict.Add(split[0], split[1]);
}
}
}
}
可以清理一下,但你明白了。您正在阅读整个文件然后拆分。你怎么知道每条线的左边和右边是哪一个?也许检查偶数和赔率?虽然你只能阅读一行然后拆分它,这太可怕了。然后只需抓住数组中的第一个和第二个项目就可以获得两个项目。