如何从字符串c#中获得始终在变化的值
-
08-07-2019 - |
题
我正在开发一个程序,它会自动从哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇我已经有了html,我可以识别字符串的位置,但我需要得到“this.effective”。价值,在这种情况下是594.但由于它总是在变化(其他价值也是如此,我不能把它放在一个特定的位置。任何帮助都会非常感激。
由于
马特 ---------这是html片段:
function strengthObject() {
this.base="168";
this.effective="594";
this.block="29";
this.attack="1168";
this.diff = this.effective - this.base;
解决方案
您可以使用正则表达式执行此操作:
using System;
using System.Text.RegularExpressions;
class Program
{
public static void Main()
{
string html = @" function strengthObject() {
this.base=""168"";
this.effective=""594"";
this.block=""29"";
this.attack=""1168"";";
string regex = @"this.effective=""(\d+)""";
Match match = Regex.Match(html, regex);
if (match.Success)
{
int effective = int.Parse(match.Groups[1].Value);
Console.WriteLine("Effective = " + effective);
// etc..
}
else
{
// Handle failure...
}
}
}
其他提示
从网站的XML版本中提取信息要容易得多。
如果您向这样的URL发出请求(仅使用有效的字符名称),那么您将获得一个XML文档,您可以使用XML解析器轻松提取数据。
http://eu.wowarmory.com/character-sheet .XML R =诺达希尔&安培; 3 CN =有人
网址与您在网络浏览器中看到的网址相同。
请注意,虽然您必须将请求的用户代理字段设置为支持该文件的XML版本的受支持浏览器的字段,否则您将返回HTML。我使用“Mozilla / 5.0 Firefox / 2.0.0.1”。作为我的程序中的用户代理,它工作正常。
哦,也不要在第二次发出多个请求,或者每3或4秒平均多次请求,或者网站阻止你的IP几个小时......
一种方法是使用正则表达式从HTML源中提取此值:
this.effective="(\d+)"
请注意,HTML抓取不是一个理想的解决方案(例如,当HTML的格式发生变化时,它可能会中断)但是我不知道“wow armory”。以及获取此信息的其他方式。
不隶属于 StackOverflow