Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取以下字符串中的表名的最有效方法_C#_String - Fatal编程技术网

C# 获取以下字符串中的表名的最有效方法

C# 获取以下字符串中的表名的最有效方法,c#,string,C#,String,在这种情况下,获取schema+表名的最有效方法是什么: 选择[t0].[Id],[t0].[CODE]作为[arg0],[t0].[DESC]作为[arg1] 从[SchemaName].[TableName]AS[t0] 其中[t0].[Id]@p0 结果需要是:SchemaName.TableName 我用的是C 谢谢 我猜,只是一些使用子字符串的好的旧字符串解析。一些代码: string q = @"SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t

在这种情况下,获取schema+表名的最有效方法是什么:

选择[t0].[Id],[t0].[CODE]作为[arg0],[t0].[DESC]作为[arg1] 从[SchemaName].[TableName]AS[t0] 其中[t0].[Id]@p0

结果需要是:SchemaName.TableName

我用的是C


谢谢

我猜,只是一些使用子字符串的好的旧字符串解析。一些代码:

 string q = @"SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t0].[DESC] AS [arg1] FROM [SchemaName].[TableName] AS [t0] WHERE ([t0].[Id] <> @p0)";
            int fromIndex = q.IndexOf("FROM")+5;
            int asIndex = q.IndexOf("AS",fromIndex);
            q = q.Substring(fromIndex, asIndex - fromIndex);

或者可以使用正则表达式:

string data = "SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t0].[DESC] AS [arg1] FROM [SchemaName].[TableName] AS [t0] WHERE ([t0].[Id] <> @p0)";
Regex re = new Regex(@"FROM ((\[\w+\]\.?){2}) AS");
Match m = re.Match(data);
if (m.Success){ Console.WriteLine(m.Groups[1]); }
或者,如果您不想包含括号:

string data = "SELECT [t0].[Id], [t0].[CODE] AS [arg0], [t0].[DESC] AS [arg1] FROM [SchemaName].[TableName] AS [t0] WHERE ([t0].[Id] <> @p0)";
Regex re = new Regex(@"FROM \[(\w+)\]\.\[(\w+)\]\ AS");
Match m = re.Match(data);
if (m.Success){ Console.WriteLine("{0}.{1}", m.Groups[1], m.Groups[2]); }

此外,您还可以扩展正则表达式以包含联接并处理多个空格