如何在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?谢谢你的帮助!

如何在c#中成功提取此子字符串?

我正在使用已经设置为扫描而不是以最佳方式解析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));
        }