如何获得角色和空间之间的角色

时间:2017-07-08 06:49:12

标签: c#

我有一个应用程序,它获取某个SQL查询的参数。

如何获取 @ 空间 之间的字符?

示例:Select Name From SomeTable Where Id=@ID Group By Name

所以输出结果为: ID

我使用以下代码,但它只在 @ 之后提取字符。在上面的示例中,它提取: ID Group By Name

strParamName = sqlQuery.Substring(sqlQuery.IndexOf('@') + 1);

3 个答案:

答案 0 :(得分:2)

请尝试以下操作:

            string sqlQuery = "Select Name From SomeTable Where Id=@ID Group By Name";
            int startIndex = sqlQuery.IndexOf('@') + 1;
            int length = sqlQuery.Substring(startIndex).IndexOf(' ');
            string strParamName = sqlQuery.Substring(startIndex, length);

答案 1 :(得分:1)

你需要这样做有点奇怪。所以我警告你,你可能做错了什么。

无论如何,这是一个使用正则表达式的解决方案:

var match = Regex.Match(yourSQLString, "^.+@(\\w+) .+$");
var result = match.Groups[1].Value;

答案 2 :(得分:1)

在您的情况下,这可能是错误的方法。

您也可以通过Regex

来实现这一目标
string sql = "Select Name From SomeTable Where Id=@ID Group By Name";

string result = Regex.Match(sql, "(?<=@)[^ ]+").Value;

模式(?<=@)[^ ]+表示以下内容:

(?<=@) - @字符的正向后视,

[^ ]+ - 非空格()字符的一次和无限次匹配。