我有一个包含以下信息的文本文件:
message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]'])
KeyError: 5484
基于stackflow社区的帮助,我现在能够读取整个文件。我还发现要在标记之间提取内容,例如ALLOC
apple1
orange1
banana1
ALLOC
apple2
orange2
banana2
ALLOC
apple3
orange3
banana3
,我可以写:
ALLOC
但这会给我var filelocation = @"c:\Fruits.txt";
var sectionLines = File.ReadAllLines(filelocation).TakeWhile(l => !l.StartsWith("ALLOC"));
:
IEnumerable<string>
如何创建3个单独的字符串
apple1
orange1
banana1
apple2
orange2
banana2
apple3
orange3
简而言之,需要在标签之间提取内容。
答案 0 :(得分:3)
以下是一些如何返回所需结果的方法:
string[] words = { "ALLOC", "apple1", "orange1", "banana1", "ALLOC", "apple2", "orange2", "banana2", "ALLOC" };
var result = string.Join(" ", words)
.Split(new string[] { "ALLOC" }, StringSplitOptions.RemoveEmptyEntries)
.Select(p => p.Trim(' '));
首先,我正在制作所有单词的单个字符串。比我分手“ALLOC”,并选择修剪过的琴弦。
结果是:
string[] result = { "apple1 orange1 banana1", "apple2 orange2 banana2" };
根据您的情况,
var filelocation = @"c:\Fruits.txt";
var allLines = File.ReadAllLines(filelocation);
var sectionLines = string.Join(" ", allLines)
.Split(new string[] { "ALLOC" }, StringSplitOptions.RemoveEmptyEntries)
.Select(p => p.Trim(' '));
答案 1 :(得分:1)
这可能会为你做到这一点
str.slice(0, num > 3 ? num - 3 : num)
在这里,我们使用string fullstr = File.ReadAllText("c:\\Fruits.txt");
string[] parts = fullstr.Split(new string[] { "ALLOC" }, StringSplitOptions.RemoveEmptyEntries);
List<string> outputstr = new List<string>();
foreach(string p in parts)
{
outputstr.Add(p.Replace("\r\n", " ").Trim(' '));
}
一次性阅读所有文字,然后将其与File.ReadAllText
分开,然后在ALLOC
中通过替换新的outputstr
添加分割后的字符串用空格划线并修剪结果。