麻烦大家给个思路,排序问题,有代码更好!

DeadlyRemind 2009-03-24 10:02:40
问题定义, 正则抓取到一系列有规则的数据,对抓取到的数据按照 我在一个XML文件中配置的顺序排序。
数据举例, \s([^="]*)="([^="]*)" 此正则抓取类似 aaa="xxxx" bbb="xxxx" ccc="xxxx"

如果我在XML中配置为 bbb ccc aaa 则按此顺序排序,如果配置中只有 ccc,则 ccc aaa bbb此顺序排序。

麻烦大家给个思路,有简单的代码举例更好

...全文
194 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tszhen 2009-03-25
  • 打赏
  • 举报
回复
感觉自己的水平还比较低哦,要多多学习,没有看懂,楼主可否写上原代码发表上来?
DeadlyRemind 2009-03-25
  • 打赏
  • 举报
回复
嗯,搞定了,其实自己想到那个循环里面去了。感谢2楼回复。

实现方式是非常简单的。
1.循环参数列表,保存到一个集合中。
2.循环设定的排序权重列表,如果抓取到的参数在此权重之中,则插入一个集合,并且从1中的集合中移除在此参数

组合这两个集合即可。

如果硬要在一个循环中处理,找不到什么好的方法。

DeadlyRemind 2009-03-24
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string tempStr = " fff=\"xsdf\" aaa=\"asdf\" bbb=\"sadf\" ccc=\"7\" ddd=\"1,2,3,4,5\" eee=\"8\"";
Regex tempRegex = new Regex(@"\s([^=""]*)=""([^=""]*)""");
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary.Add("eee",1);
dictionary.Add("ccc",2);
dictionary.Add("bbb",3);


MatchCollection tmepMatchs = tempRegex.Matches(tempStr);
foreach (Match match in tmepMatchs)
{
//Console.Write(match.Value);

}
//上面的代码是按原顺序输出,现在要求按照字典中的配置输出。
//要求先按字典排列存在与字典中的,然后剩余的随便怎么追加到后面
Console.ReadKey();
}
}
}

DeadlyRemind 2009-03-24
  • 打赏
  • 举报
回复
这样吧,大家稍等,我先写个范例代码,大家看起来可能会明白我的意思一点。
  • 打赏
  • 举报
回复
不是很了解,学习下。
yan63 2009-03-24
  • 打赏
  • 举报
回复
XML中配置为 bbb ccc aaa 可读取为string[] config1;
正则抓取类似 aaa="xxxx" bbb="xxxx" ccc="xxxx" 可读取为Dictionary<string,string> dic1
在dic1中删去config1的内容,
然后输出config1,再接着输出dic1的值即可
only_lonely 2009-03-24
  • 打赏
  • 举报
回复
不会·····
javacaspnet 2009-03-24
  • 打赏
  • 举报
回复
接分

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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