0

私は1つのテキストファイルから2つの文字列を組み合わせる方法を見つけようとしてきました。私が読んでいるテキストファイルの形式は次のとおりです。

String 1
String 2
String 3
...等。サンプルコード:

public static IEnumerable<string> getMeaningfulLines(string filename)
    {
        System.IO.StreamReader file =
          new System.IO.StreamReader(filename);
        while (!file.EndOfStream)
        {

            yield return file.ReadLine();
            yield return file.ReadLine();

            file.ReadLine();
            file.ReadLine();
            file.ReadLine();
            file.ReadLine();
        }
    }

    static void Main(string[] args)
    {


        foreach (string line in getMeaningfulLines(@"C://Log.txt"))
        {




            string teststring = line;

            string[] parts = line.Split(' ', ',', '-', '>', '[', ']');
            StringBuilder builder = new StringBuilder();


            foreach (string h in parts)
            {
                builder.Append(h).Append(" ");

            }

            string result = builder.ToString();
            string cleanedString = System.Text.RegularExpressions.Regex.Replace(result, @"\s+", " ");
            string trimString = cleanedString.Trim();

            trimString = trimString.Remove(trimString.Length - 1);


            //Console.WriteLine(trimString);

            string[] parts2 = trimString.Split(' ');
            string quotedstring = "'" + string.Join("','", parts2) + "'";
            //Console.WriteLine(quotedstring);
            string[] parts3 = quotedstring.Split(' ');
            Console.WriteLine(quotedstring, quotedstring.Length);
            //Console.WriteLine("1) The length of '{0}' is {1}",  quotedstring, quotedstring.Length);

文字列2を文字列1に追加して、「String1String2」にします。splitメソッドを使ってみて、文字列ビルダーを使って追加しました。ただし、これは行ごとに分割と追加を行うため、機能しません。「。」も使えません それらは変数に格納されていないため、それらを結合します。誰かがこれまたは例を達成する方法を知っていますか?ありがとうございました。

4

2 に答える 2

6

私が読んでいるテキストファイルの形式は次のとおりです。
文字列1
文字列2
文字列3...など。文字列2を文字列1に追加して、「String1String2」にします。

ファイルの各行をスペースを入れて追加する場合は、次のようにします。

string[] lines = File.ReadAllLines("my_file.txt");
string result = string.Join(" ", lines);

ファイルの行に構造がある場合は、この構造を保持するクラスを定義できます。例:

class Company
{
  private string name;
  private int id; 
  private string city;
  private string state;

  public string Name { get { return name; } }
  public int Id  { get { return id; } } 
  public string City { get { return city; } }
  public string State { get { return state; } }

  public Company(string name, int id, string city, string state) 
  {
    this.name = name;
    this.id = id;
    this.city = city;
    this.state = state; 
  }

  public override string ToString() 
  {
    // Create a formatted string from the fields here, for example:
    return name + " " + id + " " + city + " " + state;
  }

  public static Company FromLine(string line)
  {
    // Extract the fields from a line, and post-process the fields here, for example:
    string[] tokens = line.Split(separators);
    string name = tokens[0].Trim();
    int id = Convert.ToInt32(tokens[1]);
    string city = tokens[2];
    string state = tokens[3];
    return new Company(name, id, city, state);
  }
}

このクラスを使用して、各行のフィールドを抽出し、フォーマットして、次のフォーマットされた文字列を追加できます。

string[] lines = File.ReadAllLines("my_file.txt");
List<Company> companies = new List<Company>();
foreach (string line in lines)
  companies.Add(Company.FromLine(line));
string result = string.Join(" ", companies);

追加するアイテムを指定することもできます。たとえば、次のように最後の行を変更するだけです。

string result = string.Join(" ", companies.Where(company => company.Id > 10));
于 2012-06-21T16:53:45.890 に答える
1

以下はあなたが望むことをするはずですが、ファイルのサイズなどによっては適切でないかもしれません。そのため、そのようなことのコンテキストを与えることが重要です。これは私が考えることができる最も速い方法です。

string[] lines = File.ReadAllLines(filePath);
string joinedString = String.Format("{0} {1}", lines[0], lines[1]);
于 2012-06-21T16:54:17.227 に答える