C# 是否可以将字符串数组转换为一个字符串?
在我的程序中,我使用以下语句读取文件:C# 是否可以将字符串数组转换为一个字符串?,c#,regex,string,concatenation,C#,Regex,String,Concatenation,在我的程序中,我使用以下语句读取文件: string[] allLines = File.ReadAllLines(dataFile); 但是我想将正则表达式作为一个整体应用于文件(底部显示了一个示例文件),这样就可以消除文件中我不关心的某些内容。我不能使用ReadAllText,因为我需要为了程序的另一个目的逐行读取它(删除每行的空白) (感谢chiccodoro的代码) 这是我想申请的正则表达式 有没有办法将数组改回一个文本文件?或者其他解决问题的方法? 突然出现在我脑海中的东西正在取
string[] allLines = File.ReadAllLines(dataFile);
但是我想将正则表达式作为一个整体应用于文件(底部显示了一个示例文件),这样就可以消除文件中我不关心的某些内容。我不能使用ReadAllText,因为我需要为了程序的另一个目的逐行读取它(删除每行的空白)
(感谢chiccodoro的代码)这是我想申请的正则表达式 有没有办法将数组改回一个文本文件?或者其他解决问题的方法?
突然出现在我脑海中的东西正在取代我不关心的
string.Empty
示例文件
您可以使用:
如果您只想将其写回文件,您可以使用and,它可以与数组一起工作。只需从
string[]allLines=File.ReadAllLines(数据文件)代码>
到
string allLines=File.ReadAllText(数据文件)代码>
)() 将使用任何指定的分隔符连接数组的所有成员。使用regexen一次一行处理多行数据将非常困难。因此,我建议您首先将其作为一个大字符串阅读,执行多行正则表达式业务,然后可以使用string.split(在换行符上拆分)将其拆分为一个字符串数组,而不是对此进行胡乱处理。您希望按此顺序执行此操作的原因是,对文件数据的任何进一步操作都将包括正则表达式已经进行的更改。如果加入字符串,然后执行正则表达式,则必须再次拆分该字符串,或者在对原始数组进行操作时丢失对该字符串所做的更改
public string CreateStringFromArray(string[] allLines)
{
StringBuilder builder = new StringBuilder();
foreach (string item in allLines)
{
builder.Append(item);
//Appending Linebreaks
builder.Append("\n\l");
}
return builder.ToString();
}
请记住将其用于正则表达式匹配,以便在换行符之间匹配:
Regex r = new Regex(@"CREATE TABLE [^(]+((.*)) ON", RegexOptions.SingleLine);
您可以像这样将字符串[]连接到单个字符串中
string strmessage=string.join(",",allLines);
输出:-一个单独的、分隔的字符串。当您在每行中读取时,是否可以建立一个缓冲区?我的想法是,这可能比将所有行作为字符串数组,然后将它们连接起来更有效一些(……尽管我还没有对这个问题做过全面的研究,我很想知道这样做是否有什么理由更有效)
回答之前先读我的问题!您还需要更改正则表达式,使其与换行符匹配:new regex(@“CREATE TABLE[^(]+(.*)ON)”,RegexOptions.SingleLine);您还可以使用Environment.NewLine而不是“\r\n”@new Start:数组中的数字元素是否可以更改并不重要。分隔符是第一个参数(如果需要,可以是字符串。空的)。很有趣,我刚刚完成了连接代码的实现,我想“天哪,我该怎么把它拆分成一个数组?”…然后我读了这篇文章。哈,非常感谢你的帮助!你也需要把新行放回去;ReadAllLines丢弃了原来的新行。
public string CreateStringFromArray(string[] allLines)
{
StringBuilder builder = new StringBuilder();
foreach (string item in allLines)
{
builder.Append(item);
//Appending Linebreaks
builder.Append("\n\l");
}
return builder.ToString();
}
Regex r = new Regex(@"CREATE TABLE [^(]+((.*)) ON", RegexOptions.SingleLine);
string strmessage=string.join(",",allLines);
StringBuilder buffer = new StringBuilder();
string line = null;
using (StreamReader sr = new StreamReader(dataFile))
{
while((line = sr.ReadLine()) != null)
{
// Do whatever you need to do with the individual line...
// ...then append the line to your buffer.
buffer.Append(line);
}
}
// Now, you can do whatever you need to do with the contents of
// the buffer.
string wholeText = buffer.ToString();