从具有下一个内容的文件中读取字符串:
select 1 from dual;
select 2 from dual;
select 3 from dual;
我想使用next regexp提取每个select语句:
Regex.Split(sqlS, @";s+n")
结果数组包含所有选择,但最后一个在末尾有分号,这是我想要避免的。我想能够分割一个文本,其中包含许多选择,其中每个以分号结束。
在使用正则表达式分割之前,从字符串的末尾修剪;
(我认为s*
会更好地工作,即使行结尾不是CRLF):
Regex.Split( sqlS.TrimEnd(new[] {';'}), @";s*n" )
参见c#演示:
var text = @"select 1 from dual;
select 2 from dual;
select 3 from dual;";
var output = Regex.Split( text.TrimEnd(new[] {';'}), @";s*n" );
foreach (var s in output)
{
Console.WriteLine(s);
}
输出:
select 1 from dual
select 2 from dual
select 3 from dual
如果所有sql语句都在一个文件中,用;
与新行分隔,那么您可以尝试下面的代码来获取sql语句数组,
var filePath = @"C:Program Filessqlstatements.txt";
var sqlStatements = File.ReadAllLines(filePath) //Read file and store all lines in an array
.Select(x => x.Trim(';')) //Now iterate over each line and remove semi-colon.
.ToList(); //Optional: Convert String[] to List<string>