从主字符串

时间:2015-08-27 09:45:03

标签: c#

我有一个类似下面提到的字符串。

{
    behavior_capture_widget: "<div id="ndwc"><noscript><input type="hidden" id="ndpd-spbd" name="ndpd-spbd"                            value="ndpds~~~2.4177.112540pPaGJYVmt5WCtndGlUiUcRt3aSOPQ,,"></noscript></div> <script type="text/javascript"></script>"
    customer_session_data:   "2.4177.112540.1399312572.2.mFDzrW_JJeu-C_H45O5ADQ"
    customer_cookie_data:    "2.4177.112540.1399312572.2.XYjAsjFsOVHFXBGNnnHc-g,,."
}

我将始终以此格式获取字符串。值可能会有所不同。

我必须提取

的值
behavior_capture_widget
customer_session_data
customer_cookie_data
变量a,b,c

中的

我是c#的新手,我尝试使用substring()indexof()的组合,但无济于事 帮助将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用string.Split来获取大部分内容,而不是使用子字符串:

var input = "... your data ...";

var valueNames = new [] 
{
    "behavior_capture_widget:", 
    "customer_session_data:", 
    "customer_cookie_data:"
};

var items = input.Split(valueNames, StringSplitOptions.RemoveEmptyEntries);

现在您可以提取您的值:

var behaviorCaptureWidget = items[1].Trim();
var customerSessionData= items[2].Trim();
var customerCookieData= items[3].Trim().Replace("\"}", "");

请注意,最后一个需要手动删除尾随"}

答案 1 :(得分:0)

如果那是JSON总是。我认为最好使用&#34; Json.NET&#34;:

string json = @"{
  {
       behavior_capture_widget: "<div id=\"ndwc\"><noscript><input type=\"hidden\" id=\"ndpd-spbd" name=\"ndpd-spbd\"                            value=\"ndpds~~~2.4177.112540pPaGJYVmt5WCtndGlUiUcRt3aSOPQ,,\"></noscript></div> <script type=\"text/javascript\"></script>"
       customer_session_data:   "2.4177.112540.1399312572.2.mFDzrW_JJeu-C_H45O5ADQ"
       customer_cookie_data:    "2.4177.112540.1399312572.2.XYjAsjFsOVHFXBGNnnHc-g,,."

 }";

Dictionary<string, string> dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

var mydata = dict["customer_cookie_data"]; // extraction

here