我正在尝试使用Regex.Split方法将对象数组中每个项目的属性设置为split方法的结果。考虑以下带有getter和setter的类:
public class PuffAndStuff
{
private String puff = "";
public string puff { get => puff; set => puff = value; }
}
问题是,我想使用Regex.Split方法将文本分离到文本文件中。考虑以下程序:
static void Main()
{
Regex regex = new Regex(@"Puff[0-9]\r\n");
PuffAndStuff[] subPuff = new PuffAndStuff[] { new PuffAndStuff { puff = "" } };
StreamReader reader = File.OpenText("D:\\SampleText.txt");
string check = reader.ReadToEnd();
string[] arrayCheck = Regex.Split(check, @"Puff[0-9]\r\n");
subPuff = Regex.Split(check, @"Puff[0-9]\r\n");
subPuff[0].puff = arrayCheck[1] + arrayCheck[2];
Console.WriteLine("Segment 1:\r\n" + subPuff[0].puff);
Console.WriteLine("Segment 2:\r\n" + arrayCheck[3] + arrayCheck[4]);
}
这种想法使我不禁思索,以另一种方式(使用通用动态列表而不是对象数组)将文本与文件分开可能会更好,但我也在尝试以最快的方式思考为此(将对象列表/字典/数组设为“可能”为静态)。不过,也许这不是解决问题的实用方法。我的一个问题是subPuff对象数组将不接受Regex.Split()字符串。有人对我如何使这项工作或如何使它变得更好有任何建议吗?
答案 0 :(得分:1)
正则表达式为我工作。检查您的文本文件中是否有隐藏字符,例如行尾是否有空格。不确定确切要做什么,但是我摆脱了其中一个数组,因为您使用一个元素定义了它,然后尝试推入.Split的结果。它不会自行调整大小,但会调整列表大小。您还尝试将字符串放入PuffAndStuff对象。那行不通。无论如何,也许我的代码中的某些内容会有所帮助。
请记住遇到问题的程序员,因为他必须操纵一些文本。他以为“我将使用正则表达式!”然后他有两个问题。 :-)
public class PuffAndStuff
{
private String puff = "";
//Naming viloation - changed puff to Puff
public string Puff { get => puff; set => Puff = value; }
}
private void OPCode()
{
StreamReader reader = File.OpenText(@"D:\\SampleText.txt");
string check = reader.ReadToEnd();
List<PuffAndStuff> lstPuff = new List<PuffAndStuff>();
string[] arrayCheck = Regex.Split(check, @"Puff[0-9]\r\n");
foreach(string s in arrayCheck)
{
lstPuff.Add(new PuffAndStuff { Puff = s });
}
lstPuff[0].Puff = arrayCheck[1] + arrayCheck[2];
Console.WriteLine("Segment 1:\r\n" + lstPuff[0].Puff);
Console.WriteLine("Segment 2:\r\n" + arrayCheck[3] + arrayCheck[4]);
}