问题:
所以我有一个文本框,我在其中用引号标记部分标题,如“Lord of”和没有像Dance这样的引号的单个单词。我想提取所有这些(删除引号并将它们拆分成某种列表)所以我可以根据一些radiobutton选择构建SQL命令,哪个部分显示在下面。
反正
到目前为止,我已尝试过:
string pattern1 = "\"(.*?)\"";
MatchCollection col = Regex.Matches(textBox2.Text, @pattern1); //textbox2.Text is same as in picture
List<String> titles_to_query = new List<String> { };
for (int i = 0; i < col.Count; i++)
{
titles_to_query .Add(col[i].Groups[1].Value.ToString());
}
这将提取引号之间的所有标题
但是如何才能在我的列表中找到Dance(没有用引号括起来)?或者如果有人输入 - > “舞蹈之王”朋友
我想在没有朋友的情况下获得Lord and Dance,因为它缺少一个引号......
答案 0 :(得分:0)
我认为这是做任务的更好方法。我在工作中做了类似的计划,并且做得非常好。
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 input = "\"Legend of Tarzan\" \"Lord of Dance\"";
string pattern = "\"(?'phase'[^\"]+)\"";
MatchCollection matches = Regex.Matches(input, pattern);
List<string> wheres = new List<string>();
foreach (Match match in matches)
{
wheres.Add(string.Format("title % '{0}'", match.Groups["phase"].Value));
}
string whereClause = string.Format("WHERE {0}", string.Join(" OR ", wheres));
string SQL = string.Format(
" SELECT movie_id, ts_headline, title, ts_rank, rank" +
" FROM movies" +
" {0}" +
" ORDER BY rank DESC",
whereClause);
}
}
}