2017-02-13 1 views
0

Also mache ich eine Webanfrage und lese die Quelle und alle. In der Quelle gibt es eine bestimmte Zeichenfolge, die ich haben muss. Die Quelle:Versuch, ein Stück Text aus einer HTML-Quelle mit Webrequest zu bekommen

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

Der Teil, was ich brauche ist Name: ‚‘, also nur der Teil innerhalb des ‚‘ Wie würde ich dies zu erreichen? Ich habe versucht, reguläre Ausdrücke htmlagilitypack usw.

+1

Can u zeigen Sie den Code versucht haben? –

+0

Ich weiß, es ist zunächst schwierig. Tue einen Moment so, als ob du eine Frage für jemanden beantworten möchtest und du weißt absolut nichts über den verwendeten Technologie-Stack, sei es eine Desktop-Anwendung oder ein Web-Service usw. ... es hilft, wenn du genauer bist Stelle eine Frage. – aguertin

+0

Können Sie den Link teilen, von dem Sie diesen Teil beziehen möchten? –

Antwort

0

In Anbetracht dieser Zeichenfolge

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

Was ich ich tun würde, den String in String-Array aufgeteilt, basierend auf , Begrenzer.

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

Es ist eine ganze HTML-Quelle das ist nur ein kleiner Teil, den ich daraus kopiert habe. Da dies die Informationen enthält, die ich brauche. – MrMime

+0

Noch haben Sie eine Option, wo Sie '.Contains' Methode der Zeichenfolge anwenden können und die erforderlichen Werte finden, indem Sie den obigen Code – Lara

+0

Das ist ein bisschen verwirrend für mich. – MrMime

0

Sie können Regex Verwendung mit einem lazy quantifier (*?) den Text zwischen den { geschweiften Klammern zu erfassen }:

// 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

Fehler \t CS1061 \t 'string []' enthält keine Definition für 'Select' und keine Erweiterungsmethode 'Select' akzeptiert ein erstes Argument vom Typ 'string []' könnte gefunden werden (fehlt eine using-Direktive oder eine Assembly) Referenz?) – MrMime

+0

Fügen Sie 'using System.Linq;' an den Anfang Ihrer Klasse hinzu. – Serge

+0

Danke, das hat funktioniert. – MrMime

Verwandte Themen