如何在c#中成功提取此子字符串?
本文关键字:字符串 提取 成功 | 更新日期: 2023-09-27 17:51:02
这是有问题的代码。我还没有做太多的字符串操作,目前有问题。
if (orderid != orderlist[orderlist.Count - 1])
{
response2 = GetSubstringByString("{'"orderid'": '"" + orderid + "'"", "{'"orderid'": '"", response2);
}
else
{
response2 = GetSubstringByString("{'"orderid'": '"" + orderid + "'"", "success", response2);
}
Console.WriteLine("Response 2 is: " + response2);
logger.Log("Writing " + writepath + filename);
File.WriteAllText(writepath + filename, response2);
}
public string GetSubstringByString(string a, string b, string c) //trims beginning and ending of string
{
Console.WriteLine("String a is: " + a + "String b is: " + b + "String c is: " + c);
return c.Substring((c.IndexOf(a) + a.Length), (c.IndexOf(b) - c.IndexOf(a) - a.Length));
}
我在提取子字符串时遇到问题,因为开始和结束字符串是相同的,因此它无法区分字符串彼此。
这是主要问题:
response2 = GetSubstringByString("{'"orderid'": '"" + orderid + "'"", "{'"orderid'": '"", response2);
是否有一种方法,我可以添加一个检查,如果结束字符串的orderid不同于开始字符串的orderid?谢谢你的帮助!
我正在使用已经设置为扫描而不是以最佳方式解析JSON的代码。
我使用这个正则表达式来删除每个数字之前的orderid,以免导致扫描仪长度异常。我还重载了字符串。如juharr所提到的IndexOf
var regex = new Regex(Regex.Escape("orderid")); //replace first occurrence of orderid
response2 = regex.Replace(response2, "", parsecount-1);
public string GetSubstringByString(string a, string b, string c) //trims beginning and ending of string
{
logger.Log("String a is: " + a + "String b is: " + b + "String c is: " + c);
var offset = c.IndexOf(b);
//lastcheck will return 0 if it's last element in orderlist, because ending string differs for last
return c.Substring((c.IndexOf(a) + a.Length), (c.IndexOf(b, offset + lastcheck) - c.IndexOf(a) - a.Length));
}