文字列をより適切に解析する方法はありますか? 質問する

文字列をより適切に解析する方法はありますか? 質問する

.NET に文字列の一部を解析するための組み込みの方法があるかどうか疑問に思っています。

たとえば、次の文字列があるとします。

"bsarbirthd0692"

後でデータと相互参照される次の部分で構成されます。

Indexes   Purpose
0-3       (name)
4-9       (description)
10-13     (date mm-yy)

私は次のようなネイティブなものを期待しています:

string name, desc, date;
string.ParseFormat("{0:4}{1:5}{2:4}", "bsarbirthd0692", out name, out desc, out date);

.NET または一般的なライブラリでこれを行うネイティブな方法はありますか?

ベストアンサー1

フォーマットは既知であり、変更する必要がないため、サブストリングが機能するはずです。

string data = "bsarbirthd0692";
string name, desc, date;
name = data.Substring(0, 4);
desc = data.Substring(4, 6);
date = data.SubString(10);

編集

拡張メソッドも作成でき、好きなことを実行できます。これは明らかに以前の提案よりも複雑です。

public static class StringExtension
{
    /// <summary>
    /// Returns a string array of the original string broken apart by the parameters
    /// </summary>
    /// <param name="str">The original string</param>
    /// <param name="obj">Integer array of how long each broken piece will be</param>
    /// <returns>A string array of the original string broken apart</returns>
    public static string[] ParseFormat(this string str, params int[] obj)
    {
        int startIndex = 0;
        string[] pieces = new string[obj.Length];
        for (int i = 0; i < obj.Length; i++)
        {
            if (startIndex + obj[i] < str.Length)
            {
                pieces[i] = str.Substring(startIndex, obj[i]);
                startIndex += obj[i];
            }
            else if (startIndex + obj[i] >= str.Length && startIndex < str.Length)
            {
                // Parse the remaining characters of the string
                pieces[i] = str.Substring(startIndex);
                startIndex += str.Length + startIndex;
            }

            // Remaining indexes, in pieces if they're are any, will be null
        }

        return pieces;
    }
}

使用法1:

string d = "bsarbirthd0692";
string[] pieces = d.ParseFormat(4,6,4);

結果:

ここに画像の説明を入力してください

使用法2:

string d = "bsarbirthd0692";
string[] pieces = d.ParseFormat(4,6,4,1,2,3);

結果:

ここに画像の説明を入力してください

おすすめ記事