2017-02-13 71 views
0

所以我正在做一個webrequest和閱讀來源和所有。 在源文件中有一個我需要的特定字符串。 來源:試圖用webrequest從HTML源代碼中獲取一段文本

RESPONSIVE.constant.user = { 
       id: 71723922, 
       name: 'Raktott', 
       member: false, 
       language: 0, 
       isLoggedIn: 1 
      }; 

的一部分,我需要的是名稱:「」 我將如何做到這一點「所以纔有了內部分」? 我已經試過正則表達式htmlagilitypack等

+1

u能顯示你的代碼已經試過嗎? –

+0

我知道起初很困難。有一段時間,假裝你要回答某個人的問題,並且你對他們使用的技術堆棧是什麼都不知道,無論是桌面應用程序還是Web服務等等......如果你更具體,當你問一個問題。 – aguertin

+0

你能分享你想要抓住那部分的鏈接嗎? –

回答

0

考慮到這一點你的字符串

id: 71723922, 
    name: 'Raktott', 
    member: false, 
    language: 0, 
    isLoggedIn: 1 

我會做什麼我基於,分隔符分割字符串到字符串數組。

string str = "id: 71723922,name: 'Raktott', member: false,language: 0,isLoggedIn: 1"; 

string[] arrstr = str.Split(','); 

for (int i=0; i<=arrstr.Length; i++){ 

if(arrstr[i].Contains("name")) 

{ 
string name = arrstr[i]; 

//Perform you Logic here 

    break; 
} 
} 
+0

這是一個完整的html源代碼,這只是我從中複製的一小部分。 因爲這包含我需要的信息。 – MrMime

+0

你還有一個選擇,你可以應用'.Contains'字符串的方法,並通過引用上面的代碼找出所需的值 – Lara

+0

這對我來說有點困惑。 – MrMime

0

可以使用Regexlazy quantifier*?)捕捉{花括號}之間的文字:

// Don't forget to escape full-stops! 
Regex regex = new Regex(@"RESPONSIVE\.constant\.user = {(?<userParams>.*?)}", RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.Singleline); 

Match match = regex.Match(pageSourceCode); 

if (match.Success) 
{ 
    // Split up the values using comma 
    var keyValuePairs = match.Groups["userParams"].Value.Split(','); 

    // Split up each line using : as delimeter and clean up both sides, removing whitespace and single quote characters 
    var dict = keyValuePairs 
     .Select(kvp => kvp.Split(':')) 
     .ToDictionary(kvp => kvp[0].Trim(), kvp => kvp[1].Trim().Trim(new char[] { '\'' })); 

    // Read name 
    var name = dict["name"]; 

} 
+0

錯誤\t CS1061 \t'string []'沒有包含'Select'的定義,並且沒有找到接受'string []'類型的第一個參數的擴展方法'Select'(您是否缺少using指令或程序集參考?) – MrMime

+0

將'使用System.Linq;'添加到您的類的頂部。 – Serge

+0

謝謝,這工作。 – MrMime