我有一个包含
的sql文本"Select * from Table Where [PARAM1] = [PARAM2] ..."
我希望列出要列出的"[" "]"
代码之间的列表。
我该怎么做?
答案 0 :(得分:4)
您可以使用LINQ
来完成string str = "Select * from Table Where [PARAM1] = [PARAM2] ...";
string[] Array = str.Split().Where(r=> r.StartsWith("[") && r.EndsWith("]"))
.Select(r=> r.Trim('[',']'))
.ToArray();
答案 1 :(得分:2)
您可以尝试使用正则表达式和一些LINQ:
Regex t = new Regex(@"\[([^]]*)\]");
List<String> parameters = t.Matches(input_string).Cast<Match>().Select(a => a.Groups[1].ToString()).ToList();
这将导致List包含两个匹配PARAM1
和PARAM2
答案 2 :(得分:2)
使用此代码段
string strRegex = @"\[(.*?)\]";
RegexOptions myRegexOptions = RegexOptions.IgnoreCase;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"Select * from Table Where [PARAM1] = [PARAM2] ...";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
// myMatch.Groups[0] - your string
}
答案 3 :(得分:1)
您也可以
List<string> matches=Regex.Matches(@"(?<=\[)[^\[\]]*(?=\])")
.Cast<Match>()
.Select(x=>x.Value)
.ToList();
答案 4 :(得分:1)
以下是您的需求:
Regex t = new Regex(@"\[(.*?)\]");
string str = @"Select * from Table Where [PARAM1] = [PARAM2] ...";
foreach (Match myMatch in myRegex.Matches(str))
{
// myMatch.Groups[0] and so on....
}
答案 5 :(得分:0)
将MatchCollection转换为List use:
List<Match> myMatches = Regex.Matches("bla", @"\[[^]]*)\]").Cast<Match>.toList();
答案 6 :(得分:0)
您可以尝试使用此正则表达式:
Regex regex = new Regex(@"\[.*?\]");
var parameters = regex.Matches(sqlQueryString);