string result = "[数字]字符\r\n[数字]字符[n]n";
n无限大 当然用户不可能输入很多的,怎么匹配输入的字符串是否合法,\r\n是控件取出值的换行符,可以根据\r\n spilt数组
n无限大 当然用户不可能输入很多的,怎么匹配输入的字符串是否合法,\r\n是控件取出值的换行符,可以根据\r\n spilt数组
解决方案 »
- C#流程图相关,如何用XML表示下面关系
- C#创建快捷方式之木有IWshRuntimeLibrary肿马办。。
- 安装VS2008出现无法为VS创建“应用程序数据”文件夹,努力了很久还是解决不了
- 老问题怎么想sql server插入大文本
- 关于c# 读取excel 货币格式的问题
- 关于contextMenu的一个小问题. 希望大家帮个小忙.
- 用戶身份驗証(數據庫windows,c#)
- 在一个用户控件里有这2个公关函数,我不知道如何调用???
- Access中OLE对象存储图片时,要把图片转换成什么类型呢?(越快越好)
- 100分,高手帮帮忙,急啊!
- 我想用C#开发一个传奇挖矿外挂.
- XmlNodeList nodelist = document.SelectNodes("root/address[@sbtype='71']");
[a]手机\r[2]电脑\r[3]母婴用品...不合法
手机\r[2]电脑\r[3]母婴用品....不合法正确格式 必须是[]里面是数字 必须有[]
可以split string[] arr=new string{"[1]手机","[2]电脑","[3]母婴用品"}
然后循环集合 一项 一项匹配
string result = "[1]手机\r[2]电脑\r[3]母婴用品";
string match_pattern = @"^((?<text>\[\d+?\][^\s\\]+)(\s|\r)*?)+$";
Match m=Regex.Match(result,match_pattern);
if (m.Success)//匹配成功
{
string[] arr = m.Groups["text"].Captures.Cast<Capture>().Select(a => a.Value).ToArray();
/*
* [0] "[1]手机" string
[1] "[2]电脑" string
[2] "[3]母婴用品" string */
}
匹配是OK的 就是少了如果\r在最前面的情况,还有个问题 我现在要提取中括号中的数字 放在一个 int list 中 有正则的好方法吗?
string match_pattern = @"^((\s|\r)*?(?<text>\[(?<value>\d+?)\][^\s\\]+)(\s|\r)*?)+$";
Match m = Regex.Match(result, match_pattern);
if (m.Success)//匹配成功
{
string[] arr = m.Groups["text"].Captures.Cast<Capture>().Select(a => a.Value).ToArray();
/*
* [0] "[1]手机" string
[1] "[2]电脑" string
[2] "[3]母婴用品" string */
List<int> _list = m.Groups["value"].Captures.Cast<Capture>().Select(a => int.Parse(a.Value)).ToList();
/*
* [0] 1 int
[1] 2 int
[2] 3 int */
}