SORU
15 NİSAN 2015, ÇARŞAMBA


Bir şekilde daha iyi dizeleri ayrıştırmak için var mı?

Eğer bir şekilde inşa eğer orada merak ediyorum .NET bir ip parçaları ayrıştırmak için.

Örneğin şu dize var:

"bsarbirthd0692"

çapraz başvurulan aşağıdaki bölümden veri sonra yapılmış:

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

Bir şey gibi yerli umut ediyorum:

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

Yerel bir yolu bunu yapmak için vardır .NET ya da popüler bir kütüphane mi?

CEVAP
15 NİSAN 2015, ÇARŞAMBA


Bir biçimde bilinir ve değişmemeli beri Dize

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

EDİT

Ayrıca ne istiyorsun oluşturabilirsiniz uzatma yöntemleri var. Bu tabii ki bir önceki önerim daha karmaşık

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;
    }
}

Kullanım 1:

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

Sonuç:

enter image description here

Kullanım 2:

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

Sonuçlar:

enter image description here

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Professor Messer

    Professor Me

    27 NİSAN 2007
  • theKGB65

    theKGB65

    24 Aralık 2007
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006