彩票走势图

正则表达式的妙用--获得数组

翻译|其它|编辑:郝浩|2008-06-27 11:09:26.000|阅读 1127 次

概述:

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

      近来在工作上遇到了比较有意思的字符串,如果不用正则表达式去分析会觉得很吃力,如果用了正则表达的分析方法会觉得代码既简洁而有质量。
下面有就讲下过程吧。

现有一串字符经过我处理得到

//女性频道下面的所有分类
public static readonly string AllSubSort = "{美容,UN1070801},{瘦身,UN1070802},{首饰,UN1070803},{服饰,UN1070804},{配饰,UN1070805},"
+ "{瑜伽,UN1090102},{居家,UN10709},{装饰,UN1070901},{园艺,UN1070902},{爱情,UN1070106},{夫妻,UN1070101},{婆媳,UN1070102}"
+ ",{育儿,UN10703},{营养,UN1100205},{美食,UN107070204},{药膳,UN110080101},{保健,UN1100304},{心理,UN1100107},{妇科,UN1100507}";

  一看你会发现,这个字符串包括键值的对应关系,如何通过键得到值呢,在这里“{}”里面的两者都可以当作键。

  如果不用正则你会怎么做呢。
  ......
  现在我用正则来做就非常的简质。

请看代码
/// <summary>
/// 通过分类名称找到分类代码
/// </summary>
/// <param name="subSortName">分类名称</param>
/// <returns>分类代码</returns>
public static string FindSubSortCodeByName(string subSortName)
{
  string strRet = "";
  if (subSortName == null)
  return strRet;
  subSortName = subSortName.Trim();
  string pattern = "{" + subSortName + ",(?<key>[^}]*)}";
  Match match = Regex.Match(AllSubSort, pattern);
  if (match != null)
  strRet = match.Groups["key"].Value;
  return strRet;
}

  代码中pattern很有意思,当subSortName="美容"时,pattern="{美容,(?<key>[^}]*)}"。标红的地方为关键,以"()"表示一个Group,"?<key>"中的代码key表示Group的键(当然这这个key是个标志符号),后面表示Group的value,即可通过strRet=match.Groups["key"].Value;来获取。

  如何获取全部的value呢

/// <summary>
/// 获取所有分类代码以+连接
/// </summary>
/// <returns>所有分类代码</returns>
public static string GetAllSubSortCode()
{
  string strRet = "";
  string pattern = "{[^,]*,(?<key>[^}]*)}";
  MatchCollection matchs = Regex.Matches(AllSubSort, pattern);
  if (matchs != null)
  {
    foreach (Match match in matchs)
    {
      if (match != null)
      strRet += "+" + match.Groups["key"].Value;
    }
  }
  return strRet.Trim('+') ;
}道理是相同的,只是pattern有点同。
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:博客

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP