c#中richtextbox中的排序编号

本文关键字:编号 排序 richtextbox | 更新日期: 2024-09-21 22:16:35

我有一个richtextbox,里面有很多数字,任何数字都在一行中,我想要对数字排序。。。示例:<991.121023>想要排序<1.12991023>

c#中richtextbox中的排序编号

您可以将RichTextBox的.Text属性设置为String的输出。如果您只想让每个元素都出现在自己的行上,请加入:

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));

将数字放入一个数组中,然后调用array.Sort方法。

如果文本框只是放置这些数字的输出,那么在使用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对数组进行排序。排序并将所有数字连接回一个字符串:

Array.Sort(linesAsNumbers); // It automatically sorts from lowest to highest
richTextBox1.Text = String.Join<int>("'n", linesAsNumbers);

如果其中任何一行包含非数字字符,这当然会让人窒息,但可以与场景配合使用。