如何给含有字母和数字的字符串中的数字排序,字母位置不能改变?例如str="b3a657d8"排序后为str="b3a567d8".
解决方案 »
- 多线程 操作一个文件的问题.
- 一个村、组、农户名称灌装到一TreeView中代码请教?小弟先感谢了!
- 请大家帮个忙,c#对学生成绩排序,初学者
- winform中如何动态的控制控件显示的层次啊?
- 委托在web上该怎么写?大家帮我看看这个问题
- C#里的and 是否用&&来表示啊?
- (在线等待)用.net(C#)应用程序中对.config文件操作的问题!
- [弱智问题].net 2005 工具栏里不见了文本[查找]工具按钮
- 在窗体上按下的up和Down键时,使用SendKeys发送到ListBox,程序就死掉了,为什么,谢谢
- fill的问题
- ~~~~~~~~~~~~~~~~请教,app.config文件要放在什么地方,放在同一个目录下读不到。
- C# 启动进程传参数问题
List<Char> list = new List<char>();
foreach (Char chr in str)
{
if (char.IsDigit(chr))
list.Add(chr);
}
list.Sort();
StringBuilder sb = new StringBuilder();
for (int i = 0,j=0; i < str.Length; i++)
{
if (char.IsDigit(str[i]))
{
sb.Append(list[j++]);
}
else
{
sb.Append(str[i]);
}
}
str = sb.ToString();
using System.Linq;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var str = "b3a657d8";
var pos = 0;
var result = str.Aggregate(str.Where(c => c >= '0' && c <= '9')
.OrderByDescending(c => c)
.ToList(),
(container, c) =>
{
if (c < '0' || c > '9')
container.Insert(pos, c);
pos++;
return container;
});
Console.Write(result.ToArray());
Console.ReadKey();
}
}
}
var input = "2afbc532dfa071761adf";
var result = new Regex(@"\d{2,}")
.Replace(
input,
(match => new string(match.Value.ToCharArray().OrderBy(c => c).ToArray<char>()))
);
Console.WriteLine(result);
结果:
2afbc235dfa011677adf
.OrderBy(c => c).GetEnumerator(); for (int i = 0; i < arr.Count(); i++)
if (char.IsNumber(arr[i]))
{
strEnumerator.MoveNext();
arr[i] = strEnumerator.Current;
} var str = string.Join("", arr);
Console.WriteLine(str);