删除文本文件中的空格并读取文本 C#
本文关键字:读取 取文本 空格 文本 文件 删除 | 更新日期: 2023-09-27 18:37:02
我知道这确实是一个简单的问题,但感觉我已经阅读了互联网上的所有帖子,但我还没有找到任何可以解决我的问题的东西。我知道Java有一个字符串标记器,但我使用的是C#。我想做的是我有一个看起来像这样的文本文件:
ProductNr ProductName CustomerNr Customer
AAAAA Shoes S111 Shoebuyer
BBBBB Umbrella U222 Umbrellabuyer
如您所见,选项卡索引一团糟,所以我无法使用.Split(''t) 和我也尝试过 .Slip(' '),但这只是在有空格的地方分裂。我想做的是删除单词之间的所有空格,只阅读 AAAAA 鞋 S111 鞋买主,然后在下一行阅读相同的内容。
我尝试更改文本文件,使其与(,)分隔,然后编写了下面的代码。这适用于逗号,但我无法将其应用于我的问题。
using (StreamReader file = new StreamReader("MyTestFile.txt"))
{
string line;
while ((line = file.ReadLine()) != null)
{
char[] delimiters = new char[] { ',' };
string[] parts = line.Split(delimiters);
FileList objIntäkt = new FileList();
objIntäkt.ProductNr = parts[0];
objIntäkt.Product = parts[1];
objIntäkt.CustomerNr = parts[2];
objIntäkt.Customer = parts[3];
objIntäkts.Add(objIntäkt);
}
//Stänger filen
file.Close();
}
在我的 FileList 类中,我有我想从文本文件中读取的内容的 getter 和 setter:
public string ProductNr { set; get; }
public string Product { set; get; }
public string CustomerNr { set; get; }
public string Customer { set; get; }
然后对于我的问题,如何读取文本文件中的所有文本并删除所有空格?
您可以将string.Split
与StringSplitOptions.RemoveEmptyEntries
一起使用
string[] parts = line.Split(new[]{' ', ''t'},
StringSplitOptions.RemoveEmptyEntries);
请注意,如果项目至少包含一个空格,则将具有无效数据。
使用 Regex.Split
var parts = Regex.Split(line, "'w+");
这将拆分为连续任意数量的空格字符。
如果可以对文件内容做出一些安全的假设,则可以使用正则表达式来分析该行。从您的示例中,产品和供应商编号背后有一定的逻辑;您可以创建一个正则表达式,用于从行中提取零件。有关 .NET 中的正则表达式的详细信息,请参阅 http://msdn.microsoft.com/en-us/library/hs600312.aspx。
如果单词本身不包含空格,则有效:
var invalidData = File.ReadLines(filePath);
var validData = invalidData
.Select(line => {
var sArr = line.Split(new[]{' ', ''t'}, StringSplitOptions.RemoveEmptyEntries);
return string.Join(" ", sArr);
});
string validText = string.Join(Environment.NewLine, validData);
File.WriteAllText(filePath, validText);
但是,一旦列或数据中的单词包含空格,Split
就会失败。您应该考虑改用现有的 CSV 解析器,该解析器还可以处理像这样的文本列周围的引用字符。然后你应该像"Umbrella buyer"
一样屏蔽它们。