C# 使用子字符串获取两个字符串之间的值?
我想用substring获取某个字符串中匹配的所有值 我给出了一些只找到一个结果的代码。我需要所有的火柴 有可能吗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
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
}