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

时间:2015-05-27 17:54:06

标签: c# string

这是有问题的代码。我还没有完成很多字符串操作,目前我遇到了问题。

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不同,是否可以添加检查?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我正在处理已经设置为扫描的代码,而不是以最佳方式解析JSON。

我利用这个正则表达式在每个数字之前删除orderid,以免导致扫描程序长度异常。我还重写了juharr提到的string.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));
        }