C# 在多行中拆分在特定行位置的多行文字
我有一个多行结构的文本文件:C# 在多行中拆分在特定行位置的多行文字,c#,visual-c#-express-2010,C#,Visual C# Express 2010,我有一个多行结构的文本文件: 12345行01中的漂亮文本 95469第02行中的其他文本 16987第03行中的漂亮文本 (等等……) 我想要这个: 12345 line01中的漂亮文本 95469 第02行中的其他文本 16987 第03行中的漂亮文本 因此,对于每一行,在位置5处,我需要一个文本字符串的新行 已尝试使用字符串插入\n。删除()。插入(),但仅适用于第一行。 我该怎么做 编辑 通过请求添加的代码 在input.txt中有多行文本文件 StreamReade
12345行01中的漂亮文本
95469第02行中的其他文本
16987第03行中的漂亮文本
(等等……)
我想要这个:
12345
line01中的漂亮文本
95469
第02行中的其他文本
16987
第03行中的漂亮文本
因此,对于每一行,在位置5处,我需要一个文本字符串的新行
已尝试使用字符串插入\n
。删除()。插入()
,但仅适用于第一行。
我该怎么做
编辑
通过请求添加的代码
在input.txt中有多行文本文件
StreamReader myReader = new StreamReader("input.txt");
string myString00 = myReader.ReadLine();
string myStringFinal = myString00;
myStringFinal = myStringFinal.Remove(5, 1).Insert(5, "\n");
myReader.Close();
FileStream myFs = new FileStream("output.txt", FileMode.Create);
// First, save the standard output.
TextWriter tmp = Console.Out;
StreamWriter mySw = new StreamWriter(myFs);
Console.SetOut(mySw);
Console.WriteLine(myStringFinal);
Console.SetOut(tmp);
Console.WriteLine(myStringFinal);
mySw.Close();
Console.ReadLine();
您可以使用
Regex
var subject = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var expected = Regex.Replace(subject,@"(\d{5})\s?","$1\r\n");
基本上,这将查找5个数字,后跟一个空格(可选),如果找到,则将其替换为数字和新行。你已经完成了。这里有一些你可以用
正则表达式试试的东西
var subject = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var expected = Regex.Replace(subject,@"(\d{5})\s?","$1\r\n");
基本上,这将查找5个数字,后跟一个空格(可选),如果找到,则将其替换为数字和新行。你已经完成了。这里有一些你可以用正则表达式试试的东西
var subject = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var expected = Regex.Replace(subject,@"(\d{5})\s?","$1\r\n");
基本上,这将查找5个数字,后跟一个空格(可选),如果找到,则将其替换为数字和新行。你已经完成了。这里有一些你可以用正则表达式试试的东西
var subject = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var expected = Regex.Replace(subject,@"(\d{5})\s?","$1\r\n");
基本上,这将查找5个数字,后跟一个空格(可选),如果找到,则将其替换为数字和新行。您就完成了。只有当数字正好是5个字符时,这才有效
string input = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var lines = input.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var formattedLines = lines
.Select(x => new
{
Number = int.Parse(x.Substring(0, 5)),
Data = x.Substring(5).TrimStart()
})
.ToList();
formattedLines
将是您的行的集合,其中Number
和Data
包含行中的信息
var firstLinesData = formattedLines[0].Data;
现在,要制作输出格式:
StringBuilder builder = new StringBuilder();
foreach (var item in formattedLines)
{
builder.AppendLine(item.Number.ToString());
builder.AppendLine(item.Data);
}
string output = builder.ToString();
仅当数字正好为5个字符时,此操作才有效
string input = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var lines = input.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var formattedLines = lines
.Select(x => new
{
Number = int.Parse(x.Substring(0, 5)),
Data = x.Substring(5).TrimStart()
})
.ToList();
formattedLines
将是您的行的集合,其中Number
和Data
包含行中的信息
var firstLinesData = formattedLines[0].Data;
现在,要制作输出格式:
StringBuilder builder = new StringBuilder();
foreach (var item in formattedLines)
{
builder.AppendLine(item.Number.ToString());
builder.AppendLine(item.Data);
}
string output = builder.ToString();
仅当数字正好为5个字符时,此操作才有效
string input = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var lines = input.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var formattedLines = lines
.Select(x => new
{
Number = int.Parse(x.Substring(0, 5)),
Data = x.Substring(5).TrimStart()
})
.ToList();
formattedLines
将是您的行的集合,其中Number
和Data
包含行中的信息
var firstLinesData = formattedLines[0].Data;
现在,要制作输出格式:
StringBuilder builder = new StringBuilder();
foreach (var item in formattedLines)
{
builder.AppendLine(item.Number.ToString());
builder.AppendLine(item.Data);
}
string output = builder.ToString();
仅当数字正好为5个字符时,此操作才有效
string input = @"12345 beautiful text in line01
95469 other text in line02
16987 nice text in line03";
var lines = input.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var formattedLines = lines
.Select(x => new
{
Number = int.Parse(x.Substring(0, 5)),
Data = x.Substring(5).TrimStart()
})
.ToList();
formattedLines
将是您的行的集合,其中Number
和Data
包含行中的信息
var firstLinesData = formattedLines[0].Data;
现在,要制作输出格式:
StringBuilder builder = new StringBuilder();
foreach (var item in formattedLines)
{
builder.AppendLine(item.Number.ToString());
builder.AppendLine(item.Data);
}
string output = builder.ToString();
在每行上循环。使用substring()获取前5个字符作为字符串。使用字符串生成器并添加第一部分,抓取下一部分并添加到字符串生成器中,每行循环一次。使用substring()获取前5个字符作为字符串。使用字符串生成器并添加第一部分,抓取下一部分并添加到字符串生成器中,每行循环一次。使用substring()获取前5个字符作为字符串。使用字符串生成器并添加第一部分,抓取下一部分并添加到字符串生成器中,每行循环一次。使用substring()获取前5个字符作为字符串。使用字符串生成器并添加第一部分,抓取下一部分并添加到字符串生成器中您能发布到目前为止的代码吗used@akibau,你知道你只是在读第一行。您只调用了一次ReadLine()
。。我不知道我是否知道。。我是一个真正的新手程序员,所以我需要2/3天的时间来理解你写的所有东西,并使其工作。谢谢你,你太棒了@akibau Sriram Sakthivel下面的答案使用正则表达式查找5位数字,然后添加一个换行符。值得一看。如果它解决了你的问题,一定要接受!你能发布到目前为止的代码吗?刚刚添加了我需要的代码used@akibau,你知道你只是在读第一行。您只调用了一次ReadLine()
。。我不知道我是否知道。。我是一个真正的新手程序员,所以我需要2/3天的时间来理解你写的所有东西,并使其工作。谢谢你,你太棒了@akibau Sriram Sakthivel下面的答案使用正则表达式查找5位数字,然后添加一个换行符。值得一看。如果它解决了你的问题,一定要接受!你能发布到目前为止的代码吗?刚刚添加了我需要的代码used@akibau,你知道你只是在读第一行。您只调用了一次ReadLine()
。。我不知道我是否知道。。我是一个真正的新手程序员,所以我需要2/3天的时间来理解你写的所有东西,并使其工作。谢谢你,你太棒了@akibau Sriram Sakthivel下面的答案使用正则表达式查找5位数字,然后添加一个换行符。值得一看。如果它解决了你的问题,一定要接受!你能发布到目前为止的代码吗?刚刚添加了我需要的代码used@akibau,你知道你只是在读第一行。您只调用了一次ReadLine()
。。我不知道我是否知道。。我是一个真正的新手程序员,所以我需要2/3天的时间来理解你写的所有东西,并使其工作。谢谢你,你太棒了@akibau Sriram Sakthivel下面的答案使用正则表达式查找5位数字,然后添加一个换行符。值得一看。如果它解决了你的问题,一定要接受!我明白你说的ReadLine()是什么意思了。没关系,原来的输入文件是一个杂乱的长行,在一系列字符串之后变成多行。我做了替换,达到了string myString07
。我总结了问题。好吧,试过你的例子,做了一个小小的改变。但问题是,在字符串输入=@”“
中,我需要插入清理后的多行文本,该文本现在存储在字符串myString07
中。如何将该内容传递到示例第一行的字符串输入=
?尝试了string input=@myString07
,但还是只处理了第一行,其他行保持不变。我明白了您关于ReadLine()的意思。没关系,奥利吉