-6

我有一个带有很多数字的richtextbox,任何数字都在一个特殊的行中,我想要对数字进行排序...例如:< 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);

很难从你的问题中看出问题所在。如果你想在一行中输出排序后的数字,它们之间有空格,你可以加入一个空格:

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 回答