如何为富文本框中的每一行重复此操作?

时间:2016-12-09 18:35:09

标签: c# string visual-studio richtextbox

我目前正在使自己成为一个小工具。

基本上我有这样的列表:

NPWR00160_00 LittleBigPlanet
NPWR00163_00 Warhawk
NPWR00179_00 Pure
NPWR00180_00 Midnight Club: Los Angeles
NPWR00181_00 echochrome™
NPWR00187_00 WipEout® HD

目前这是在richTextBox中输入的。

我正在尝试这样做,获取该行的NPWRXXXXXX并将其保存为字符串,然后将游戏名称保存为另一个字符串,我可以继续执行我原本要做的事情它。但是对于richTextBox的每一行,它继续如上所述。

不太确定如何从richTextBox获取一行并将其保存为字符串,我可以在其中为richTextBox的每一行重复该过程。

对于我的尝试,我给自己举了一个例子,字符串是NPWR02727_00 Skydive:Proximity Flight。我做的是这个:

    string game = "NPWR02727_00 Skydive: Proximity Flight";
    string NPWR = game.Substring(0,13);
    string gamename = game.Remove(0, 13);
    richTextBox2.AppendText("NPWRID: " + NPWR + " Game: " + gamename + Environment.NewLine);

实际上成功保存字符串并将其作为新表单写在第二个文本框中。

唯一的问题是我不确定如何从RichTextBox转换一行并将其转换为字符串,并为富文本框中的每一行重复该过程

修改

所以我发现如何将字符串从richTextBox转换为一行..

string line = richTextBox1.Lines[0];

所以这将获得第一行并将其保存为字符串“line”

现在将代码更新为

string game = richTextBox1.Lines[0];
string NPWR = game.Substring(0,13);
string gamename = game.Remove(0, 13);
richTextBox2.AppendText("NPWRID: " + NPWR + " Game: " + gamename + Environment.NewLine);

现在我如何让每一行都运行此代码,我知道我需要重复一遍,并且每次重复时都要更改0以增加1来计算?

再次编辑

太棒了,忘了上面的编辑,非常感谢!

1 个答案:

答案 0 :(得分:1)

我建议你做类似的事情:

        var codes = new List<string>();
        var games = new List<string>();

        foreach(var s in richTextBox1.Lines)
        {
            string[] p = s.Split(new char[] { ' ' }, 2);
            if (p.Count() == 1) { continue; }

            codes.Add(p[0]);
            games.Add(p[1]);
        }

基本上,我们声明了两个 string 类型的列表,分别存储游戏的代码和名称。然后我们继续循环遍历RichTextBox的 Lines 属性,对于每一行,我们将线条除以我们找到的第一个索引( space );要求最多两个字符串,以避免分裂任何即将到来的元素;如果游戏名称包含空格。

对于获得的两个子字符串,我们将第一部分保存到List代码中,第二部分保存到List游戏中。

对于进一步的使用(遍历代码/名称),我们可以访问两个列表

for(int c = 0; c < codes.Count; c++)
{
    MessageBox.Show(codes[c] + string.Empty + games[c]);
}