C# 基于某些字符从文本框自动捕获值

C# 基于某些字符从文本框自动捕获值,c#,asp.net,C#,Asp.net,我想要一个功能,用户可以在文本框中输入一些文本,并且基于一些预定义的字符,我必须识别用户可以链接到的不同属性。 例如:在文本框中,用户输入为: “您好@Sunil您将在#桌面上工作,其优先级为!1” string TitleText = "Hello @Sunil you are going to work on #Desktop which has a priority of !1 "; string title; string devname;

我想要一个功能,用户可以在文本框中输入一些文本,并且基于一些预定义的字符,我必须识别用户可以链接到的不同属性。 例如:在文本框中,用户输入为: “您好@Sunil您将在#桌面上工作,其优先级为!1”

        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(" "));
现在从这些数据中,我想提取开发者的名字,也就是说,基于@..,也就是sunil。 团队名称基于#char,即桌面..和任务优先级,基于!char是1

        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(" "));
这些数据将被输入一个网站,用于任务管理和管理员将进入这个。。。 这样一来,它就成为管理员快速进入任务的工具

        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(" "));
我可以分割数据并对其进行处理……但是有太多的排列和组合可以输入顺序字符(#,@!)

        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(" "));
我试过这样的方法,但没用:

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]);
    }
        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(" "));

如果每个句子都有多个标记,这将不起作用。但它确实与您提供的示例相反:

        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(" "));

如果每个句子都有多个标记,这将不起作用。但它确实与您提供的示例相反:

        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(" "));
试试正则表达式

        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(" "));
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(" "));
string Name=Regex.Match(SubjectString, "@(.*?) ").Groups[1].Value;
string Comp=Regex.Match(SubjectString, "#(.*?) ").Groups[1].Value;
string Priort=Regex.Match(SubjectString, "!(.*?) ").Groups[1].Value;

如果任何搜索的字符不存在,这将抛出一个错误。@gbianchi-是的,它将抛出一个错误。在解析之前,添加条件逻辑来检查字符是否存在是不重要的。如果任何搜索的字符不存在,这将抛出一个错误。@gbianchi-是的,它将,在解析之前,添加条件逻辑来检查字符是否存在是很简单的。