4

複数行のテキスト ボックスの各行から文字列配列または多次元配列に値を転送しようとしています。同じ配列に入れる必要がある 3 つの複数行テキスト ボックスもあります。以下は、私が試してきた方法の1つです。

ParkingTimes[0] = tbxtimeLimitS1.Text;

for (int i = 1; i <= 10; i++)
   ParkingTimes[i] = tbxparkingTimesS1.Lines;

ParkingTimes[11] = tbxtimeLimitS2.Lines;

for (int x = 0; x <= 10; x++)
   for (int i = 12; i <= 21; i++)
       ParkingTimes[i] = tbxparkingTimesS2.Lines;

ParkingTimes[11] = tbxtimeLimitS2.Lines[0];

for (int x = 0; x <= 10; x++)
    for (int i = 23; i <= 32; i++)
        ParkingTimes[i] = tbxparkingTimesS3.Lines;

私は何を間違っていますか?これを達成するためのより良い方法はありますか?

4

5 に答える 5

14

あなたは簡単に行うことができます

string[] allLines = textbox.Text.Split('\n');

これにより、各行が分割され、結果が配列内の適切なインデックスに格納されます。その後、次のように反復できます。

foreach (string text in allLines)
{
    //do whatever with text
}
于 2012-04-29T14:54:22.820 に答える
5

文字列配列の代わりにリストを使用できます。次に、AddRangeメソッドを使用すると、メソッドを簡略化してforeachループを排除できます。

List<string> ParkingTimes = new List<string>()
ParkingTimes.Add(tbxtimeLimitS1.Text);   
ParkingTimes.AddRange(tbxparkingTimesS1.Lines);
ParkingTimes.AddRange(tbxtimeLimitS2.Lines);   
ParkingTimes.AddRange(tbxparkingTimesS2.Lines);   
ParkingTimes.AddRange(tbxtimeLimitS2.Lines);   
ParkingTimes.AddRange(tbxparkingTimesS3.Lines);   

それでもコードに文字列配列が必要な場合は、次のようにして配列を取得できます。

string[] myLines = ParkingTimes.ToArray();

List<string>この機能の例は、 MSDNのここにあります。

于 2012-04-29T15:01:55.910 に答える
3

次のようなことができます。

var totalLines = new List<String>();
totalLines.AddRange( tbxparkingTimesS1.Lines );
totalLines.AddRange( tbxparkingTimesS2.Lines );
totalLines.AddRange( tbxparkingTimesS3.Lines );

リストではなく配列で必要な場合は、次を呼び出します。

var array = totalLines.ToArray();

それが役に立てば幸い。

于 2012-04-29T15:17:35.637 に答える