Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用子字符串获取两个字符串之间的值?_C#_Substring - Fatal编程技术网

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

C# 使用子字符串获取两个字符串之间的值?,c#,substring,C#,Substring,我想用substring获取某个字符串中匹配的所有值 我给出了一些只找到一个结果的代码。我需要所有的火柴 有可能吗 int pFrom = icrasorgula_cevap.IndexOf("<dosyaId>") + "<dosyaId>".Length; int pTo = icrasorgula_cevap.LastIndexOf("</dosyaId>"); string result = icrasorgula_cevap.Substring

我想用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>
int pFrom=icrasorgula_cevap.IndexOf(“”+“”)长度;
int pTo=icrasorgula_cevap.LastIndexOf(“”);
字符串结果=icrasorgula_cevap.子字符串(pFrom,pTo-pFrom);
105344286
梅尔克齐·塔基普·西斯特米
2019/15333
294
2019-06-19 03:50:05.0
0
11
1101
1199
523127202
1.
MTS Dosyası
105428346
梅尔克齐·塔基普·西斯特米
2019/15333
294
2019-06-19 03:50:05.0
0
11
1101
1199
523123427202
1.
MTS Dosyası
0
0
0
0
0

使用子字符串获取这些

523123427202
5231272023

xml解析器显然是正确的选择,但使用代码的一个选择是循环(代码假定总是存在对)

var icrasorgula_cevap=@“firstsecondthird”;
int指数=0;
int pTo=0;
而((index=icrasorgula_cevap.IndexOf(“,pTo))>=0)
{
int pFrom=索引+长度;
pTo=icrasorgula_cevap.IndexOf(“”,pFrom);
字符串结果=icrasorgula_cevap.子字符串(pFrom,pTo-pFrom);
Console.WriteLine(结果);//第一、第二、第三
}

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

var icrasorgula_cevap=@“firstsecondthird”;
int指数=0;
int pTo=0;
而((index=icrasorgula_cevap.IndexOf(“,pTo))>=0)
{
int pFrom=索引+长度;
pTo=icrasorgula_cevap.IndexOf(“”,pFrom);
字符串结果=icrasorgula_cevap.子字符串(pFrom,pTo-pFrom);
Console.WriteLine(结果);//第一、第二、第三
}

如果您试图读取XML,您应该使用XML解析器,这就是它们的设计目的。撇开Alex K的有效观点不谈,有一些重载到
IndexOf
中,它们采用开始索引,因此您可以编写循环,在最后一次匹配之后继续。而不仅仅是XML代码。使用正则表达式是可能的,但我要求使用子字符串。你能给我一个示例代码吗?如果你使用正则表达式,你会遇到额外的问题。是的,你是对的?那么我能做些什么呢?如果你试图读取XML,你应该使用XML解析器,这就是它们的设计目的。撇开Alex K的有效点不谈,有一些重载到
IndexOf
,它们使用一个开始索引,所以你可以编写一个循环,在最后一次匹配之后继续。不仅仅是XML代码。使用正则表达式是可能的,但我要求使用子字符串。你能给我一个示例代码吗?如果你使用正则表达式,你会遇到额外的问题。是的,你是对的?那么我能做什么呢?谢谢你的回答。非常感谢你的回答。非常感谢你
<dosyaId>523123427202</dosyaId>
<dosyaId>5231272023</dosyaId>
 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

   }