5

私は次のような文字列を持っています"1\t2\r\n3\t4"。それらを次のように分割したいと思います。

new string[][] { { 1, 2 }, { 3, 4 } }

基本的には行に分割し、各行をタブに分割する必要があります。次のものを使用してみましたが、機能しません。

string toParse = "1\t2\r\n3\t4";

string[][] parsed = toParse
    .Split(new string[] {@"\r\n"}, StringSplitOptions.None)
    .Select(s => s.Split('\t'))
    .ToArray();
  1. 私の方法の何が問題になっていますか?希望する結果が得られないのはなぜですか?
  2. LINQを使用してこの問題にどのようにアプローチしますか?
4

2 に答える 2

7

'@'を削除します。

string toParse = "1\t2\r\n3\t4";

string[][] parsed = toParse
    .Split(new string[] {"\r\n"}, StringSplitOptions.None)
    .Select(s => s.Split('\t'))
    .ToArray();

@を使用すると、文字列が表す文字ではなく、バックスラッシュが文字列に含まれます。

于 2013-02-10T21:19:51.730 に答える
3
string str = "1\t2\r\n3\t4";
Int32[][] result = str.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
    .Select(s => s.Split('\t').Select(s2 => int.Parse(s2)).ToArray())
    .ToArray();

デモ

于 2013-02-10T21:23:06.080 に答える