-6

たくさんの数字が入ったリッチテキストボックスがあり、任意の数字が特別な行にあり、数字を並べ替えたい... 例: < 99 1 12 1023 > < 1 12 99 1023 > を並べ替えたい

4

3 に答える 3

1

.Textすべての要素をそれぞれの行に表示するだけの場合は、RichTextBoxのプロパティを String.Join からの出力に設定できます。

int[] numbers = new[] { 99, 1, 12, 1023 };
Array.Sort(numbers);
richTextBox1.Text = String.Join(Environment.NewLine, numbers);

あなたの質問から何が問題なのかを判断するのは困難です。並べ替えられた数値をスペースを挟んで 1 行にまとめて出力したい場合は、代わりにスペースで結合できます。

richTextBox1.Text = String.Format("< {0} >", String.Join(" ", numbers));

そのような形式で数値を読み込んで並べ替え、同じ形式で出力しようとしている場合は、個々の数値の文字列を解析する必要があります。

string inputRaw = "< 99 1 12 1023 >";
inputRaw = inputRaw.Trim(new[] { '<', '>' });
List<int> inputNumbers = new List<int>();
string[] temporary = inputRaw.Split(' ');
foreach (string s in temporary)
{
    int n;
    if (Int32.TryParse(s, out n))
        inputNumbers.Add(n);
}
inputNumbers.Sort();

richTextBox1.Text = String.Format("< {0} >", String.Join(" ", inputNumbers));
于 2012-08-03T19:39:04.603 に答える
0

数値を配列に入れてから、Array.Sort メソッドを呼び出します。

于 2012-08-03T19:33:13.097 に答える
0

テキストボックスがそれらの数値を配置する単なる出力である場合は、を使用してテキストボックスに値を配置する前に値をソートする方が賢明Array.sortです。

テキストボックスが実際にユーザーが値を提供する入力である場合、最初に各行の内容を取得して数値に変換し、配列に格納する必要があります。

int[] linesAsNumbers = new int[richTextBox1.Lines.Length]; // We'll store the numbers in this array

int i = 0; // Keep an index of where to place the incoming numbers
foreach (string line in richTextBox1.Lines)
{
    linesAsNumbers[i++] = Convert.ToInt32(line); // Convert each line into a number and store it into our newly created array
}

次に、Array.Sort を使用して配列を並べ替え、すべての数値を結合して文字列に戻す必要があります。

Array.Sort(linesAsNumbers); // It automatically sorts from lowest to highest

richTextBox1.Text = String.Join<int>("\n", linesAsNumbers);

もちろん、行に数字以外の文字が含まれている場合、これはチョークしますが、シナリオでは機能します。

于 2012-08-03T19:57:06.640 に答える