将文本分割为选择



从具有下一个内容的文件中读取字符串:

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>

相关内容

  • 没有找到相关文章

最新更新