簡體   English   中英

如何使用indexof和substring解析特定的字符串?

[英]How can i parse specific string using indexof and substring?

int firstTag = source.IndexOf("data-token=");
int lastTag = source.IndexOf("\"href", firstTag);
int startIndex = firstTag + 12;
int endIndex = lastTag + 5;
string authenticityToken = source.Substring(startIndex, endIndex - startIndex);

我要解析的字符串是從這里:

<a class="bizLink" data-token="-iUzEhgdscgbpj5VMi5zoh54FTeFt8M4mj5nsiodxR5VzZOhniodpj6nFQg0nce3MhUxFSgdxjM4J
jUVzZuNu8o0sREnFSUzISUXzZWh4iodGQfdxR5VzZWh4iodGQfhli6fnce_=" 
                           href="

我只想獲取“和”之間的字符串:

-iUzEhgdscgbpj5VMi5zoh54FTeFt8M4mj5nsiodxR5VzZOhniodpj6nFQg0nce3MhUxFSgdxjM4J
    jUVzZuNu8o0sREnFSUzISUXzZWh4iodGQfdxR5VzZWh4iodGQfhli6fnce_=

但是我得到的代碼是我想要的這個長字符串,還有所有其余的文件文本。

理智的方法是使用HTML解析器和查詢庫。 我可以建議使用CsQuery ,它是.NET中類似jQuery的庫。 您可以使用類似a[data-token]的選擇器來匹配錨,然后提取屬性值。

這是正確的做事方式。


但是,如果您只想得到這一個屬性,不要再礙着與HTML源東西,它可能會更容易,只需使用正則表達式,但要注意: 解析HTML與正則表達式是邪惡的

因此,如果您要做的只是提取一條信息(作為一種特殊的措施)作為您的信息,則可以使用以下信息:

var m = Regex.Match(source, @"data-token\s*=\s*""(?<token>.+?)""");
var authenticityToken = m.Groups["token"].Value;

但是請先嘗試使用CsQuery。 這是一個更好的方法。

工作示例http://ideone.com/U224iZ

string start = "data-token=";
  string end = " href";

  string source = "<a class='bizLink' data-token='-iUzEhgdscgbpj5VMi5zoh54FTeFt8M4mj5nsiodxR5VzZOhniodpj6nFQg0nce3MhUxFSgdxjM4JjUVzZuNu8o0sREnFSUzISUXzZWh4iodGQfdxR5VzZWh4iodGQfhli6fnce_=1\" href='";

  int firstTag = source.IndexOf(start);
  int lastTag = source.IndexOf(end, firstTag );
  int startIndex = firstTag + start.Length +1;
  int endIndex = lastTag;
  string authenticityToken = source.Substring(startIndex, endIndex - startIndex -1);
  Console.Write(authenticityToken);
  Console.ReadLine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM