求字符串数组中的最大值

jiang_jiajia10 2012-03-27 07:50:03
需求如下:

一个数组 有很多元素如下:['str_user_201203120608.txt','str_user_201203130509.txt','str_user_201203140905.txt'.........'str_user_201203270809.txt']
这些元素名字都是按照日期生成的。
怎么把最后一天的文件名str_user_201203270809.txt 取出来 付给一个字符串。
...全文
583 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiang_jiajia10 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 porschev 的回复:]
引用 9 楼 jiang_jiajia10 的回复:

C# code

string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_201203140905.txt" };

int cur ……
[/Quote]

Exactly, I got the ideal answer based on your great hint.
Thank you for your great help.
q107770540 2012-03-27
  • 打赏
  • 举报
回复
可惜了 .net2.0
这样的需求用LINQ实现起来会很优雅
porschev 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jiang_jiajia10 的回复:]

C# code

string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_201203140905.txt" };

int cur = 0;
int……
[/Quote]

和我那山寨方法差不多。。基本上属于一个妈生的。。。你这个好像品种要优良一点
jiang_jiajia10 2012-03-27
  • 打赏
  • 举报
回复

string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_201203140905.txt" };

int cur = 0;
int max = 0;

foreach (string s in str)
{
cur = (int)(s.Replace("str_user_", "").Replace(".txt", ""));

if (cur > max)
{
max = cur;
}
}

string maxString = "str_user_" + max.ToString() + ".txt";
porschev 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiang_jiajia10 的回复:]

引用 6 楼 porschev 的回复:
C# code

static void Main(string[] args)
{

string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_2……
[/Quote]

只要是取名字吗?

如果前str_user_和后面的.txt都是固定的,可以采取山寨点的方法


static void Main(string[] args)
{
string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_201203140905.txt" };

List<string> list = new List<string>();
for (int i = 0; i < str.Length; i++)
{
list.Add(str[i].Substring(9, 12));
}
list.Sort();
list.Reverse();
Console.WriteLine("str_user_" + list[0] + ".txt");
Console.ReadLine();
}

jiang_jiajia10 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 porschev 的回复:]
C# code

static void Main(string[] args)
{

string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_201203140905.txt" }; ……
[/Quote]

你应该是明白了我的需求,但是我用的是.net 2.0, linq的一些方法是不支持的。可否用2.0的方式实现呢?
porschev 2012-03-27
  • 打赏
  • 举报
回复


static void Main(string[] args)
{

string[] str = new string[] { "str_user_201203130509.txt", "str_user_201203120608.txt", "str_user_201203270809.txt", "str_user_201203140905.txt" };

var q = str.OrderByDescending(p => Convert.ToInt64(p.Substring(9,12))).First();

Console.WriteLine(q);
Console.ReadLine();
}

threenewbee 2012-03-27
  • 打赏
  • 举报
回复
string[] s = new string[] {
"str_user_201203120608.txt",
"str_user_201203130509.txt",
"str_user_201203140905.txt",
.........
"str_user_201203270809.txt"
};
string result = s.OrderByDescending(x => x).FirstOrDefault() ?? "";
Snowdust 2012-03-27
  • 打赏
  • 举报
回复
string[] arr = new string[] { "str_user_201203120608.txt", "str_user_201203130509.txt", "str_user_201203140905.txt", "str_user_201203270809.txt" };
Array.Sort(arr);
string lastOne = arr[arr.Length - 1];
MessageBox.Show(lastOne);

是按日期排序的啊。
jiang_jiajia10 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dalmeeme 的回复:]

string[] ss=....;
Array.Sort(ss);
Array.Reverse(ss);
取ss[0]即可。
[/Quote]
这个数组排列不是按顺序的。
dalmeeme 2012-03-27
  • 打赏
  • 举报
回复
string[] ss=....;
Array.Sort(ss);
Array.Reverse(ss);
取ss[0]即可。
色拉油 2012-03-27
  • 打赏
  • 举报
回复
就按字符串比较大小就行

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧