使用子字符串获取两个字符串之间的值?

时间:2019-06-21 11:34:20

标签: c# substring

我想使用子字符串来获取某个字符串中匹配的所有值吗?

我给出了一些代码,该代码可以找到唯一的结果。我需要所有火柴。

有可能吗?

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>

使用Substring获取它们。

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

1 个答案:

答案 0 :(得分:2)

xml解析器显然是正确的选项,但是使用您的代码的一个选项是循环(代码假定始终存在对)-例如。

 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

   }