0

さて、私はこの情報を含むファイルを持っています:

2012年4月12日2012年6月12日XX123410116000020000118XEPLATINOXEXX XXXEXX XXXX PLATINOX XX $ 131.07

これは完全な行です。ファイルにこのような10行が追加されました。次の結果を取得するには、C#でsplitを使用します。

 Line[0]= 04/12/2012
 Line[1]= 06/12/2012
 Line[2]= XX123410116000020000118
 Line[3]= XEPLATINOXE XX XXXEXX XXXX PLATINOX  XX
 Line[4]= $     131.07

私はこれをやろうとしましたが、うまくいきません。助けてください。

ありがとう。

祝福せよ!

4

4 に答える 4

1

誰かが派手な正規表現を提案すると確信していますが、これを使わずに行う方法は次のとおりです。

string source = "04/12/2012 06/12/2012 XX123410116000020000118 XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07";
string[] split1 = source.Split('$');
string[] split2 = split1[0].Split(new char[] {' '},4);  // limit to 4 results
string lines = split2.Concat(new [] {split1[1]});
于 2013-03-06T15:02:33.443 に答える
0

さて、誰かがこの答えを投稿し、それは私のために働きます!

String[] array1 = file_[count + 19].Split(new[] { " " }, 4,StringSplitOptions.RemoveEmptyEntries);

この場合、最後の配列を分割する必要はありません。

array[3]    

私にとってはこのフォーマットで問題ないからです:

XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07

どうもありがとう!

祝福せよ!

于 2013-03-06T16:37:14.387 に答える
0

2012年4月12日2012年6月12日XX123410116000020000118XEPLATINOXEXX XXXEXX XXXX PLATINOX XX $ 131.07

グループ化中括弧を使用して正規表現で解析することができますが、本当に信頼できる結果を得るには、レコードのどの部分が一貫しているかを知る必要があります。

3番目の項目には空白がなく、5番目の項目は常に$で始まると仮定します。

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // First we see the input string.
        string input = "04/12/2012 06/12/2012 XX123410116000020000118 XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07";

        // Here we call Regex.Match.
        Match match = Regex.Match(input, @"^(\d\d\/\d\d\/\d{4}) (\d\d\/\d\d\/\d{4}) (\S+) ([^\$]+) (\$.+)$");

        // Here we check the Match instance.
        if (match.Success)
        {
            // Your results are stored in  match.Groups[1].Value, match.Groups[2].Value, match.Groups[3].Value, 
            //      match.Groups[4].Value, and match.Groups[5].Value, so now you can do whatever with them
            Console.WriteLine(match.Groups[5].ToString());
            Console.ReadKey();
        }
    }
}

いくつかの便利なリンク:

于 2013-03-06T15:31:57.790 に答える
-1

String.Substringメソッド(Int32、Int32)

それは永遠に続いています。

使用例:

String myString = "abc";
bool test1 = myString.Substring(2, 1).Equals("c"); // This is true.
Console.WriteLine(test1);
bool test2 = String.IsNullOrEmpty(myString.Substring(3, 0)); // This is true.
Console.WriteLine(test2);
try {
   string str3 = myString.Substring(3, 1); // This throws ArgumentOutOfRangeException.
   Console.WriteLine(str3);
}
catch (ArgumentOutOfRangeException e) {
   Console.WriteLine(e.Message);
}
于 2013-03-06T15:01:19.180 に答える