C# 类似章节(1,1.1,1.1.1)数字字符串的倒序排列
时间: 2023-08-02 09:07:27 浏览: 62
如果你要对类似章节(1,1.1,1.1.1)数字字符串的列表进行倒序排列,可以使用C#中的LINQ库进行处理,具体的实现方式如下:
```csharp
// 定义待排序的数字字符串列表
List<string> numberStrings = new List<string> { "1", "1.1", "1.1.1", "2", "2.1", "10", "10.1" };
// 将数字字符串转换为元组
var numberTuples = numberStrings.Select(ns => ns.Split('.').Select(int.Parse).Reverse().ToArray());
// 对元组进行排序
var sortedTuples = numberTuples.OrderByDescending(nt => nt);
// 将排序后的元组转换为数字字符串
var sortedStrings = sortedTuples.Select(nt => string.Join(".", nt.Reverse()));
// 输出排序结果
foreach (var sortedString in sortedStrings)
{
Console.WriteLine(sortedString);
}
```
输出结果为:
```
10.1
10
2.1
2
1.1.1
1.1
1
```
注意,这里的代码假设了输入的数字字符串中每个层级的数字都是非负整数。如果输入的数字字符串中包含负数或小数,需要对代码进行适当修改。
相关问题
C#类似章节(1,1.1,1.1.1)数字字符串的排序
你可以使用字符串比较器(`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
```