C# 从行文本生成包含意向项的列表
我有一些行文本。我想从本文中创建事件和意图活动,将它们放在列表中,然后将它们导入数据库。让我更具体一点。让我们假设我有以下句子: “在第1次聚会上,我们将喝些饮料,吃些美味的食物,玩ps3游戏。在第2次聚会上,我们将唱卡拉OK,并用嘻哈歌曲跳舞。” 我的愿望是: 事件1:第1方C# 从行文本生成包含意向项的列表,c#,asp.net,linq,C#,Asp.net,Linq,我有一些行文本。我想从本文中创建事件和意图活动,将它们放在列表中,然后将它们导入数据库。让我更具体一点。让我们假设我有以下句子: “在第1次聚会上,我们将喝些饮料,吃些美味的食物,玩ps3游戏。在第2次聚会上,我们将唱卡拉OK,并用嘻哈歌曲跳舞。” 我的愿望是: 事件1:第1方 Activitie1: take some drinks Activitie2: eat very good food Activitie3: play ps3 games 事件2:第2部分 Activitie1: d
Activitie1: take some drinks
Activitie2: eat very good food
Activitie3: play ps3 games
事件2:第2部分
Activitie1: do karaoke
Activitie2: dance with hip hop songs
到目前为止,我所做的是允许使用特殊字符“#,*”。因此,当我有*时,我产生一个事件,当我有*时,我产生一个活动。因此,我可以制作事件和活动,但我无法匹配它们。我需要找到一种方法来匹配(意图)生成的元素。我的代码:
string astring = Convert.ToString(lblrowtext.Text);
if (astring.IndexOf("#") >= 0 || astring.IndexOf("*") >= 0)
{
string[] Eventsarray;
string[] Activitiessarray;
List<string> listofEvents = new List<string>();
List<string> listofActivities = new List<string>();
Activitiessarray = Regex.Matches(astring, @"#([^\*#]*)").Cast<Match>()
.Select(m => m.Groups[1].Value).ToArray();
Eventsarray = Regex.Matches(astring, @"\*([^\*#]*)").Cast<Match>()
.Select(m => m.Groups[1].Value).ToArray();
if (Activitiessarray != null)
{
if (Activitiessarray.Count() > 0)
{
listofActivities = new List<string>(Activitiessarray);
ViewState["listofActivities"] = listofActivities;
Repeater1.DataSource = listofActivities;
Repeater1.DataBind();
}
if (Eventsarray != null)
{
if (Eventsarray.Count() > 0)
{
listofEvents = new List<string>(Eventsarray);
ViewState["listofEvents"] = listofEvents;
Repeater2.DataSource = listofEvents;
Repeater2.DataBind();
}
}
}
}
string astring=Convert.ToString(lblrowtext.Text);
if(astring.IndexOf(“#”)0 | | astring.IndexOf(“*”>)0)
{
字符串[]事件数组;
字符串[]活动数组;
List LISTOFENTS=新列表();
List listofActivities=新列表();
activitiesarray=Regex.Matches(astring,@“#([^\*#]*)”).Cast()
.Select(m=>m.Groups[1].Value).ToArray();
Eventsarray=Regex.Matches(astring,@“\*([^\*\\\\\]*)”).Cast()
.Select(m=>m.Groups[1].Value).ToArray();
如果(ActivitiesArray!=null)
{
如果(activitiesarray.Count()>0)
{
listofActivities=新列表(ActivitiesArray);
ViewState[“listofActivities”]=listofActivities;
Repeater1.DataSource=活动列表;
Repeater1.DataBind();
}
if(Eventsarray!=null)
{
如果(Eventsarray.Count()>0)
{
listofEvents=新列表(Eventsarray);
ViewState[“listofEvents”]=listofEvents;
Repeater2.DataSource=事件列表;
Repeater2.DataBind();
}
}
}
}
创建一个事件类,向其中添加活动。每次遇到*事件时,创建一个新的事件实例
Psuedo-C#:
类事件
{
字符串描述;
列出活动清单;
}
课堂活动
{
字符串描述;
}
列出ParseEventLines(IEnumerable allLines)
{
var result=新列表();
Event currentEvent=null;
foreach(所有行中的var行)
{
if(带(“*”)的行开始)
{
currentEvent=新事件{描述=行};
结果.添加(currentEvent);
}
else if(第行以“#”开头)
{
currentEvent.Activities.Add(新活动{Description=line});
}
}
返回结果;
}
创建一个事件类,向其中添加活动。每次遇到*事件时,创建一个新的事件实例
Psuedo-C#:
类事件
{
字符串描述;
列出活动清单;
}
课堂活动
{
字符串描述;
}
列出ParseEventLines(IEnumerable allLines)
{
var result=新列表();
Event currentEvent=null;
foreach(所有行中的var行)
{
if(带(“*”)的行开始)
{
currentEvent=新事件{描述=行};
结果.添加(currentEvent);
}
else if(第行以“#”开头)
{
currentEvent.Activities.Add(新活动{Description=line});
}
}
返回结果;
}
您可以通过以下方式实现:
private static void Main(string[] args)
{
var updationIndex = 0;
const string inputString = "On *Party1 #we will take some drinks, #eat very good food and #play ps3 games.# ";
Func<string, char, char, string> getMyString = (givenString, skipTill, takeTill) =>
{
var opString =
new string(
givenString.ToCharArray()
.SkipWhile(x => x != skipTill)
.Skip(1)
.TakeWhile(x => x != takeTill)
.ToArray());
updationIndex = inputString.IndexOf(givenString, StringComparison.CurrentCultureIgnoreCase)
+ opString.Length;
return opString;
};
var eventName = getMyString(inputString, '*', '#');
Console.WriteLine("Event" + eventName);
Console.WriteLine("Activities: ");
while (updationIndex < inputString.Length)
{
var activity = getMyString(inputString.Remove(0, updationIndex), '#', '#');
Console.WriteLine(activity);
if (string.IsNullOrWhiteSpace(activity))
{
break;
}
}
}
private static void Main(字符串[]args)
{
var UpdateIndex=0;
const string inputString=“On*Party1#我们要喝点饮料#吃点好吃的东西#玩ps3游戏。#”;
Func getMyString=(givenString、skipTill、takeTill)=>
{
变量操作字符串=
新字符串(
givenString.ToCharArray()
.SkipWhile(x=>x!=skipTill)
.Skip(1)
.TakeWhile(x=>x!=takeTill)
.ToArray());
UpdateIndex=inputString.IndexOf(给定字符串、StringComparison.CurrentCultureIgnoreCase)
+opString.Length;
返回opString;
};
var eventName=getMyString(inputString,'*','#');
Console.WriteLine(“事件”+eventName);
Console.WriteLine(“活动:”);
while(updateIndex
您可以通过以下方式实现:
private static void Main(string[] args)
{
var updationIndex = 0;
const string inputString = "On *Party1 #we will take some drinks, #eat very good food and #play ps3 games.# ";
Func<string, char, char, string> getMyString = (givenString, skipTill, takeTill) =>
{
var opString =
new string(
givenString.ToCharArray()
.SkipWhile(x => x != skipTill)
.Skip(1)
.TakeWhile(x => x != takeTill)
.ToArray());
updationIndex = inputString.IndexOf(givenString, StringComparison.CurrentCultureIgnoreCase)
+ opString.Length;
return opString;
};
var eventName = getMyString(inputString, '*', '#');
Console.WriteLine("Event" + eventName);
Console.WriteLine("Activities: ");
while (updationIndex < inputString.Length)
{
var activity = getMyString(inputString.Remove(0, updationIndex), '#', '#');
Console.WriteLine(activity);
if (string.IsNullOrWhiteSpace(activity))
{
break;
}
}
}
private static void Main(字符串[]args)
{
var UpdateIndex=0;
const string inputString=“On*Party1#我们要喝点饮料#吃点好吃的东西#玩ps3游戏。#”;
Func getMyString=(givenString、skipTill、takeTill)=>
{
变量操作字符串=
新字符串(
givenString.ToCharArray()
.SkipWhile(x=>x!=skipTill)
.Skip(1)
.TakeWhile(x=>x!=takeTill)
.ToArray());
UpdateIndex=inputString.IndexOf(给定字符串、StringComparison.CurrentCultureIgnoreCase)
+opString.Length;
返回opString;
};
var eventName=getMyString(inputString,'*','#');
Console.WriteLine(“事件”+eventName);
Console.WriteLine(“活动:”);
while(updateIndex