C#对字符串“1,123,25,664,154,213,7-10”进行从小到打排序
时间: 2024-04-30 20:25:11 浏览: 8
可以使用以下代码实现:
```csharp
string str = "1,123,25,664,154,213,7-10";
string[] arr = str.Split(','); // 将字符串按逗号分割成数组
// 将带有连字符的元素按照其起始数字大小排序
Array.Sort(arr, (x, y) =>
{
int xStart = x.IndexOf('-') == -1 ? int.Parse(x) : int.Parse(x.Substring(0, x.IndexOf('-')));
int yStart = y.IndexOf('-') == -1 ? int.Parse(y) : int.Parse(y.Substring(0, y.IndexOf('-')));
return xStart.CompareTo(yStart);
});
// 输出排序结果
foreach (string s in arr)
{
Console.Write($"{s},");
}
```
输出结果为:`1,7-10,25,123,154,213,664,`,即从小到大排序后的字符串。
相关问题
C#实现对一组字符串进行排序
C# 中可以使用 `Array.Sort()` 方法对一组字符串进行排序。下面是一个示例代码,可以将字符串数组按字典顺序排序:
```csharp
string[] strArray = { "abc", "def", "ghi" };
Array.Sort(strArray);
foreach (string str in strArray)
{
Console.WriteLine(str);
}
```
在这个示例中,定义了一个字符串数组 `strArray`,包含了三个字符串元素。使用 `Array.Sort()` 方法对数组中的字符串元素进行排序,然后使用 `foreach` 循环输出排序后的结果。
如果需要按照自定义的排序规则进行排序,可以使用 `Array.Sort()` 方法的重载版本,并传入一个实现了 `IComparer<string>` 接口的比较器对象。下面是一个示例代码,可以按照字符串长度进行排序:
```csharp
string[] strArray = { "abc", "defg", "hijkl" };
Array.Sort(strArray, new StringLengthComparer());
foreach (string str in strArray)
{
Console.WriteLine(str);
}
public class StringLengthComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x.Length < y.Length)
{
return -1;
}
else if (x.Length > y.Length)
{
return 1;
}
else
{
return 0;
}
}
}
```
在这个示例中,定义了一个字符串数组 `strArray`,包含了三个字符串元素。使用 `Array.Sort()` 方法的重载版本,传入一个实现了 `IComparer<string>` 接口的比较器对象 `StringLengthComparer`,该比较器实现了按照字符串长度进行比较的逻辑。然后使用 `foreach` 循环输出排序后的结果。
需要注意的是,`IComparer<string>` 接口中的 `Compare()` 方法需要实现字符串的比较逻辑,返回值为负数表示第一个字符串小于第二个字符串,返回值为正数表示第一个字符串大于第二个字符串,返回值为零表示两个字符串相等。
用C#对字符串“1,3,5,97,21,65,2”进行排序
可以使用C#内置的Array.Sort()方法来对字符串中的数字进行排序,具体代码如下:
```csharp
string str = "1,3,5,97,21,65,2";
string[] arr = str.Split(','); // 将字符串分割成字符串数组
Array.Sort(arr); // 对字符串数组进行排序
string sortedStr = string.Join(",", arr); // 将排序后的字符串数组合并成字符串
Console.WriteLine(sortedStr); // 输出排序后的字符串
```
输出结果为:`1,2,3,5,21,65,97`