基于某些字符从文本框中自动获取值
本文关键字:获取 于某些 字符 文本 | 更新日期: 2023-09-27 18:27:04
我想要一个功能,用户可以在文本框中输入一些文本,并且根据一些预定义的字符,我必须识别用户可以链接到的不同属性。例如:在文本框中,用户输入如下:"你好@Sunil,你将在#Desktop上工作,它的优先级为!1"
现在,我想从这些数据中提取开发人员的名称,即基于@。。这就是sunil。基于#char的团队名称,即桌面。。和任务的优先级,基于!char为1。
这些数据将在网站上输入,用于任务管理,管理员将输入此。。。这样,它就变成了快速进入任务。。。管理员。
我可以分割数据并进行处理……但可能会有太多的排列和组合,其中可能会输入顺序字符(#,@,!)。
我试过这样的方法,但没有用:
if (TitleText.Contains("#") && TitleText.Contains("@") && TitleText.Contains("!"))
{
string[] arr = TitleText.Split('#', '@', '!');
title = arr[0];
devName = arr[1].Trim().ToLower();
devTeam = arr[2].Trim().ToLower();
prio = Convert.ToInt32(arr[3]);
} else if (TitleText.Contains("#") && TitleText.Contains("@")) {
string[] arr = TitleText.Split('#', '@');
title = arr[0];
devName = arr[1].Trim().ToLower();
devTeam = arr[2].Trim().ToLower();
// prio = Convert.ToInt32(arr[3]);
} else if (TitleText.Contains("#") && TitleText.Contains("!")) {
string[] arr = TitleText.Split('#', '!');
title = arr[0];
devName = arr[1].Trim().ToLower();
//devTeam = arr[2];
prio = Convert.ToInt32(arr[2]);
} else if (TitleText.Contains("@") && TitleText.Contains("!")) {
string[] arr = TitleText.Split('@', '!');
title = arr[0];
// devName = arr[1];
devTeam = arr[1].Trim().ToLower();
prio = Convert.ToInt32(arr[2]);
} else if (TitleText.Contains("#")) {
string[] arr = TitleText.Split('#');
title = arr[0];
devName = arr[1].Trim().ToLower();
//devTeam = arr[1];
//prio = Convert.ToInt32(arr[2]);
} else if (TitleText.Contains("@")) {
string[] arr = TitleText.Split('@');
title = arr[0];
// devName = arr[1];
devTeam = arr[1].Trim().ToLower();
//prio = Convert.ToInt32(arr[2]);
} else if (TitleText.Contains("!")) {
string[] arr = TitleText.Split('!');
title = arr[0];
// devName = arr[1];
//devTeam = arr[1];
prio = Convert.ToInt32(arr[1]);
}
尝试使用regex
string Name=Regex.Match(SubjectString, "@(.*?) ").Groups[1].Value;
string Comp=Regex.Match(SubjectString, "#(.*?) ").Groups[1].Value;
string Priort=Regex.Match(SubjectString, "!(.*?) ").Groups[1].Value;
如果每句话有多个标签,这将不起作用。但它确实与您提供的示例相反:
string TitleText = "Hello @Sunil you are going to work on #Desktop which has a priority of !1 ";
string title;
string devname;
string devteam;
title = TitleText.Substring(TitleText.IndexOf("#")+1);
title = title.Substring(0,title.IndexOf(" "));
devname = TitleText.Substring(TitleText.IndexOf("@") + 1);
devname = devname.Substring(0, devname.IndexOf(" "));
devteam = TitleText.Substring(TitleText.IndexOf("!") + 1);
devteam = devteam.Substring(0, devteam.IndexOf(" "));
static void Main(string[] args)
{
var text = "Hello @Sunil you are going to work on #Desktop which has a priority of !1";
var devPattern = new Regex(@"'@([^'s]+)");
var teamPattern = new Regex(@"#([^'s]+)");
var priorityPattern = new Regex(@"'!([0-9]+)");
var team = ExtractValue(text, teamPattern);
var dev = ExtractValue(text, devPattern);
var priority = ExtractValue(text, priorityPattern);
}
private static string ExtractValue(string input, Regex regex)
{
return regex.IsMatch(input) ? regex.Match(input).Groups[1].ToString() : null;
}