5

TextWriter一部のデータを入力するために を作成する必要がありました。を TextWriter として使用しStringWriterましたが、ビジネス ロジックは正常に動作します。

すべてのクライアントが壊れる可能性があるため、変更できない技術的要件があります。string[]行でTextWriter区切られた文字列の配列が必要です。

私はこれを試しましたが、うまくいきませんでした:

using System;
using System.IO;
using System.Text;

namespace TextWriterToArrayOfStringsDemo
{
    internal static class Program
    {
        private static void Main()
        {
            var stringBuilder = new StringBuilder();
            using (TextWriter writer = new StringWriter(stringBuilder))
            {
                writer.Write("A");
                writer.WriteLine();
                writer.Write("B");
            }

            string fullString = stringBuilder.ToString();
            string replaced = fullString.Replace('\n', '\r');
            string[] arrayOfString = replaced.Split('\r');

            // Returns false but should return true
            Console.WriteLine(arrayOfString.Length == 2);
        }
    }
}

アイデアや提案はありますか?

4

2 に答える 2

7

Environment.NewLineではなく分割するために使用してみてください'\n'

        var stringBuilder = new StringBuilder();
        using (TextWriter writer = new StringWriter(stringBuilder))
        {
            writer.Write("A");
            writer.WriteLine();
            writer.Write("B");
        }

        string fullString = stringBuilder.ToString();
        string[] newline = new string[] { Environment.NewLine };
        string[] arrayOfString = fullString.Split(newline, StringSplitOptions.RemoveEmptyEntries);

        // Returns false but should return true
        Console.WriteLine(arrayOfString.Length == 2);
于 2012-04-24T18:00:41.320 に答える
3

簡単な修正は、Regex 分割を使用することです。

string[] arrayOfString = 
   System.Text.RegularExpressions.Regex.Split(stringBuilder.ToString(), "\r?\n")
于 2012-04-24T18:02:12.793 に答える