C#类似章节(1,1.1,1.1.1)数字字符串的排序
时间: 2023-08-13 16:06:05 浏览: 53
你可以使用字符串比较器(`StringComparer`)和`OrderBy`方法来对类似(1,1.1,1.1.1)的数字字符串进行排序。以下是一个示例代码:
```csharp
string[] numbers = new string[] { "1", "1.1", "1.1.1", "1.2", "2", "2.1", "10", "10.1", "10.1.1" };
var sortedNumbers = numbers.OrderBy(n => n, StringComparer.Ordinal).ToArray();
foreach (var number in sortedNumbers)
{
Console.WriteLine(number);
}
```
这将输出以下内容:
```
1
1.1
1.1.1
1.2
2
2.1
10
10.1
10.1.1
```
请注意,使用`StringComparer.Ordinal`比较器进行排序将按照字符串的Unicode编码顺序进行排序,因此可以正确地处理类似(10,10.1,10.1.1)的数字字符串。
相关问题
C# 章节(1,1.1,1.1.1)数字字符串的排序
对于数字字符串的排序,可以使用C#内置的排序函数来实现。具体步骤如下:
1. 将数字字符串存储在一个数组中。
2. 使用Array类的Sort方法对数组进行排序。由于数字字符串默认按照字符串顺序排序,需要自定义比较器来实现按照数字大小排序。
3. 输出排序后的数字字符串数组。
以下是示例代码:
```
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
string[] nums = { "10", "2", "3", "22", "1", "9" };
Array.Sort(nums, new NumericStringComparer());
foreach (string num in nums)
{
Console.WriteLine(num);
}
}
}
class NumericStringComparer : IComparer<string>
{
public int Compare(string x, string y)
{
int intX = int.Parse(x);
int intY = int.Parse(y);
return intX.CompareTo(intY);
}
}
```
输出结果为:
```
1
2
3
9
10
22
```
类似章节(1,1.1,1.1.1)数字字符串的排序
对于类似章节(1,1.1,1.1.1)这样的数字字符串排序,可以按照以下方式进行排序:
1. 首先将所有的数字字符串转换为数组形式,如“1.1.1”转换为[1,1,1]。
2. 对于每一个数组,将其长度扩展到相同的长度,不足的位数用0补齐,如[1,1]会被扩展为[1,1,0]。
3. 将所有的数组按照从左到右的顺序进行比较,直到出现不同的数字为止。
4. 如果出现不同的数字,则将数字小的数组排在前面,如果数字相同,则比较下一位数字。
5. 重复以上步骤,直到所有的数字字符串都被排序完成。
例如,对于数字字符串["1", "1.1", "1.1.1", "1.2", "2", "2.1"]进行排序,可以按照以下步骤进行:
1. 将所有数字字符串转换为数组形式:
[1], [1,1], [1,1,1], [1,2], [2], [2,1]
2. 将所有数组扩展到相同的长度:
[1,0,0], [1,1,0], [1,1,1], [1,2,0], [2,0,0], [2,1,0]
3. 比较所有的数组:
[1,0,0] < [1,1,0] < [1,1,1] < [1,2,0] < [2,0,0] < [2,1,0]
4. 将数字小的数组排在前面:
[1,0,0], [1,1,0], [1,1,1], [1,2,0], [2,0,0], [2,1,0]
5. 排序完成,将数组转换为数字字符串:
["1", "1.1", "1.1.1", "1.2", "2", "2.1"]