是否可以将字符串数组转换为一个字符串?

New*_*art 6 c# regex string concatenation

在我的程序中,我使用以下语句读入文件:

string[] allLines = File.ReadAllLines(dataFile);  
Run Code Online (Sandbox Code Playgroud)

但我想将一个正则表达式作为一个整体应用于该文件(示例文件显示在底部)所以我可以消除我在文件中不关心的某些东西.我不能使用ReadAllText,因为我需要逐行读取它以用于程序的另一个目的(从每行中删除空格).

Regex r = new Regex(@"CREATE TABLE [^\(]+\((.*)\) ON");  
Run Code Online (Sandbox Code Playgroud)

(感谢chiccodoro获取此代码)
这是我想申请的正则表达式.

有没有办法将数组更改回一个文本文件?或者问题的任何其他解决方案?
我脑海中浮现的东西正在取代我不关心的"东西" string.Empty.

示例文件

USE [Shelleys Other Database]
CREATE TABLE db.exmpcustomers(
    f_name varchar(100) NULL,
    l_name varchar(100) NULL,
    date_of_birth date NULL,
    house_number int NULL,
    street_name varchar(100) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

Pra*_*uja 16

您可以将string []连接到这样的单个字符串中

string strmessage=string.join(",",allLines);
Run Code Online (Sandbox Code Playgroud)

输出: - 一个单独的字符串.


Nul*_*ion 8

你可以使用String.Join():

string joined = String.Join(Environment.NewLine, allLines);
Run Code Online (Sandbox Code Playgroud)

如果您只想将其写回文件,则可以使用File.WriteAllLines()并使用数组.

  • 您也可以使用Environment.NewLine而不是"\ r \n" (2认同)

rta*_*bot 5

String.Join 将使用任何指定的分隔符连接数组的所有成员.


sir*_*ide 3

使用正则表达式一次一行处理多行数据将非常困难。因此,我建议您首先将其作为一个大字符串读取,执行多行正则表达式业务,然后您可以使用 String.Split 将其拆分为一个字符串数组(拆分为换行符)。您想要按此顺序执行此操作的原因是,对文件数据的任何进一步操作都将包括正则表达式已进行的更改。如果您连接字符串,然后执行正则表达式,您将不得不再次拆分该字符串,或者丢失在操作原始数组时对其所做的更改。

请记住将其用于正则表达式匹配,以便它能够跨换行符匹配:

Regex r = new Regex(@"CREATE TABLE [^(]+((.*)) ON", RegexOptions.SingleLine);
Run Code Online (Sandbox Code Playgroud)