【问题标题】:Foreach wont split a stringForeach 不会拆分字符串
【发布时间】:2010-04-15 19:26:04
【问题描述】:
//assign variables
        string measurementIn;


        //read in file in array
        string[] lines = File.ReadAllLines("../../convert.txt");

        //ask user for date
        Console.WriteLine("Enter the conversion in the form (amount,from,to)");
        measurementIn = Console.ReadLine();

        //array for splitting input
        string[] conversionArray = measurementIn.Split(',');

        Console.WriteLine("{0} , {1} , {2}", conversionArray[0], conversionArray[1], conversionArray[2]);
        Console.ReadLine();

        //check lines for conversion
        foreach (string line in lines)
        {
            //array for the measurement
            string[] measurementArray = line.Split(',');

            Console.WriteLine("{0}", measurementArray[0]);

问题出在最后,foreach里面的东西

【问题讨论】:

  • 请描述您所看到的和您的预期,而不是仅仅发布代码。
  • 你得到了什么结果?您意识到您的代码每行只会打印 1 个结果,而不是该行的所有拆分项?
  • 我试图用逗号将行分成 3 部分。目前,什么都没有显示。我认为有可能做到这一点?
  • 似乎缺少一些代码。您是否尝试过使用小于号?如果是这样,您将需要编辑您的问题并将其替换为“<”。
  • @Luke:您能否编辑您的问题以包含您的 cmets。这将使人们更容易理解这个问题(而不是他们必须通读所有的 cmets)。您能否还包括您正在使用的文本文件(或足以说明它的格式)。

标签: c#


【解决方案1】:

也许你搜索这样的东西?

在文本中:

Dog,Cat,Mouse,Fish,Cow,Horse,Hyena
Programmer,Wizard,CEO,Rancher,Clerk,Farmer

代码:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        int i = 0;
        foreach (string line in File.ReadAllLines("TextFile1.txt"))
        {
            string[] parts = line.Split(',');
            foreach (string part in parts)
            {
                Console.WriteLine("{0}:{1}",
                    i,
                    part);
            }
            i++;
        }
    }
}

输出:

0:Dog
0:Cat
0:...
1:Programmer
1:...

我在哪里得到它: http://dotnetperls.com/string-split

刚刚尝试了一些东西:

StreamReader convert = new StreamReader("../file.txt");

string line = convert.ReadLine();
String inputMeasurement = Console.ReadLine();
string[] inputMeasurementArray = inputMeasurement.Split(',');
while (line != null)
{
    string[] fileMeasurementArray = line.Split(',');
    if (fileMeasurementArray[0] == inputMeasurementArray[1])
    {
        if (fileMeasurementArray[1] == inputMeasurementArray[2])
        {
            Console.WriteLine("{0}", fileMeasurementArray[2]);
        }
        else
        {
            Console.WriteLine("False");
        }

    }
    else
    {
        Console.WriteLine("False");
    }
    line = convert.ReadLine();
}
Console.ReadKey();

【讨论】:

  • 我在文本文件中有 6 行。基本上我试图将line.Split的第一部分与measurementIn.Split的第二部分相匹配。如果发生这种情况,我想将 line.Split 的第二部分与 measureIn.Split 的第三部分匹配。
  • 我已经修改了你的代码的第二部分,修改了它,我就在我需要的地方。现在必须玩弄它以获得我的最终结果。非常感谢
【解决方案2】:

尝试使用 StreamReader 从文件中读取行,而不是使用 File.ReadAllLine() 然后循环遍历每一行。像这样:

StreamReader convert = new StreamReader("filename.txt");

string line = convert.ReadLine();

while (line != null)
{
    string[] measurementArray = line.Split(',');
    Console.WriteLine("{0}", measurementArray[0]);
    Console.WriteLine("{0}", measurementArray[1]);
    line = convert.ReadLine();
}

您需要添加“使用 System.IO;”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-06
    • 2019-08-24
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多