我想将一个字符串拆分为2个数组,一个用vbTab分隔的文本(我认为它是c#中的\t
)和另一个用vbtab分隔的测试字符串(我认为它是{{1在c#)中。
通过搜索我找到了这个(StackOverFlow Question: 1254577):
\n
但是我的字符串会是这样的:
string input = "abc][rfd][5][,][.";
string[] parts1 = input.Split(new string[] { "][" }, StringSplitOptions.None);
string[] parts2 = Regex.Split(input, @"\]\[");
所以在上面的代码输入变成:
aaa\tbbb\tccc\tddd\teee\nAccount\tType\tCurrency\tBalance\t123,456.78\nDate\tDetails\tAmount\n03NOV13\tTransfer\t9,999,999.00-\n02NOV13\t\Cheque\t125.00\nDebit Card Cash\t200.00
但是如何创建一个字符串数组,其中包含第一个换行符以及另一个包含所有内容的数组?
然后第二个必须再次拆分成几个字符串数组,这样我就可以写出一个包含帐户详细信息的迷你语句,然后显示每个帐户的交易。
我希望能够获取原始字符串并在A5纸上生成类似的内容:
答案 0 :(得分:1)
以下代码应该按照您的要求执行。这导致part1
有5个条目,part2
有26个条目
string input = "aa\tbbb\tccc\tddd\teee\nAccount\tType\tPersonal Current Account\tCurrency\tGBP\tBalance\t123,456.78\nDate\tDetails\tAmount\n03NOV13\tTransfer\t9,999,999.00-\n02NOV13\t\Cheque\t125.00\nDebit Card Cash\t200.00\n30OCT13\tLoan Repayment\t1,234.56-\n\tType\t30-Day Notice Savings Account\tCurrency\tGBP\tBalance\t983,456.78\nDate\tDetails\tAmount\n03NOV13\tRepaid\t\250\n";
// Substring starting at 0 and ending where the first newline begins
string input1 = input.Substring(0, input.IndexOf(@"\n"));
/* Substring starting where the first newline begins
plus the length of the new line to the end */
string input2 = input.Substring(input.IndexOf(@"\n") + 2);
string[] part1 = Regex.Split(input1, @"\\t");
string[] part2 = Regex.Split(input2, @"\\t");
答案 1 :(得分:1)
您可以使用LINQ查询:
var cells = from row in input.Split('\n')
select row.Split('\t');
您可以使用First()
获取第一行,使用Skip()
获取其余行。例如:
foreach (string s in cells.First())
{
Console.WriteLine("First: " + s);
}
或
foreach (string[] row in cells.Skip(1))
{
Console.WriteLine(String.Join(",", row));
}