Frkn
Frkn

Reputation: 157

Get the values of between two string with using substring?

I want to get all of the values which is matches in a some string with using substring?

I gave the some code which finds the only one result. I need all of matches..

İs it possible?

int pFrom = icrasorgula_cevap.IndexOf("<dosyaId>") + "<dosyaId>".Length; 
int pTo = icrasorgula_cevap.LastIndexOf("</dosyaId>"); 

string result = icrasorgula_cevap.Substring(pFrom, pTo - pFrom);

<root>
<object-array>
    <object-array>
        <DVOList>
            <liste>
                <AvukatDosyaKisiDVO>
                    <birimId>105344286</birimId>
                    <birimAdi>Merkezi Takip Sistemi</birimAdi>
                    <dosyaNo>2019/15333</dosyaNo>
                    <dosyaTurKod>294</dosyaTurKod>
                    <dosyaAcilisTarihi>2019-06-19 03:50:05.0</dosyaAcilisTarihi>
                    <dosyaDurumu>0</dosyaDurumu>
                    <birimTuru1>11</birimTuru1>
                    <birimTuru2>1101</birimTuru2>
                    <birimTuru3>1199</birimTuru3>
                    <dosyaId>523127202</dosyaId>
                    <dosyaKisiSize>1</dosyaKisiSize>
                    <dosyaTurAciklama>MTS Dosyası</dosyaTurAciklama>
                </AvukatDosyaKisiDVO>
            </liste>
            <liste>
                <AvukatDosyaKisiDVO>
                    <birimId>105428346</birimId>
                    <birimAdi>Merkezi Takip Sistemi</birimAdi>
                    <dosyaNo>2019/15333</dosyaNo>
                    <dosyaTurKod>294</dosyaTurKod>
                    <dosyaAcilisTarihi>2019-06-19 03:50:05.0</dosyaAcilisTarihi>
                    <dosyaDurumu>0</dosyaDurumu>
                    <birimTuru1>11</birimTuru1>
                    <birimTuru2>1101</birimTuru2>
                    <birimTuru3>1199</birimTuru3>
                    <dosyaId>523123427202</dosyaId>
                    <dosyaKisiSize>1</dosyaKisiSize>
                    <dosyaTurAciklama>MTS Dosyası</dosyaTurAciklama>
                </AvukatDosyaKisiDVO>
            </liste>
            <actualCount>0</actualCount>
            <currentPage>0</currentPage>
            <pageSize>0</pageSize>
            <cacheID>0</cacheID>
            <recordCount>0</recordCount>
        </DVOList>
    </object-array>
</object-array>

Get these with using Substring..

<dosyaId>523123427202</dosyaId>
<dosyaId>5231272023</dosyaId>

Upvotes: 0

Views: 66

Answers (1)

NDJ
NDJ

Reputation: 5194

An xml parser is obviously the correct option, but using your code one option is to loop (code assumes there are always pairs) - e.g.

 var icrasorgula_cevap = @"<dosyaId>first</dosyaId><dosyaId>second</dosyaId><dosyaId>third</dosyaId>";

 int index = 0;
 int pTo = 0;
 while ((index = icrasorgula_cevap.IndexOf("<dosyaId>", pTo)) >= 0)
 {
   int pFrom = index + "<dosyaId>".Length;
   pTo = icrasorgula_cevap.IndexOf("</dosyaId>", pFrom);

   string result = icrasorgula_cevap.Substring(pFrom, pTo - pFrom);
   Console.WriteLine(result); // first, second, third

   }

Upvotes: 2

Related Questions