我有在下列格式的行製表符分隔文本文件:使用LINQ to得到製表符分隔文本文件中的字符串轉換的方式數組我想
I000001 \ t I000002 \ t 「等等等等等等。胡說。等等等等」
我想每行每分裂選項卡上,所以上述線路將被分爲三個部分
我已經能夠分裂當沒有空格或引用時,每行都按需要,但是我很困難有。
這裏就是我具有類似於上述的線嘗試:
var x = from lines in data
.Where(l => !string.IsNullOrEmpty(l))
.Select(l => l.Split('\t'))
select new
{
A = lines[0].Trim(),
B = lines[1].Trim(),
C = lines[2].Trim()
};
上面產生帶有索引的陣列[0],[1],[2]。每個索引都有三個由上述字符串組成的成員(見下圖)。它應該只有一個索引和三個成員。
通知所述陣列中的第一項如何,有三個要素。數組中還有兩個項目在第一個項目的下面。它們都有3個元素,這三個元素包含了用雙引號括起來的字符串的其餘部分。
解決方案:
按照選定的答案,有一個在裏面語錄一句多餘的標籤,導致額外的項目被添加到陣列中。爲了解決這個我用一個正則表達式,改編自this answer:
line = Regex.Replace(line, @"""[^""]+""", m => m.Value.Replace('\t', ' '));
不太清楚你的問題是什麼......你能解釋一下嗎? –
我假設你很困惑,因爲調試器窗口顯示「I000001」,但它只是表示它是一個字符串。其實它是'I000001'。 –
真的嗎?我想我解釋得很好。雙引號內的字符串被分成幾個部分,在數組中創建比應該多的對象。雙引號(或第三個選項卡)中的字符串應僅位於索引[2]處,完整。 – MattSull