كيف يمكنني الحصول على دائما تغيير القيمة من سلسلة c#

StackOverflow https://stackoverflow.com/questions/1816159

  •  08-07-2019
  •  | 
  •  

سؤال

أنا أعمل على البرنامج الذي سوف تحصل تلقائيا على شخصياتك احصائيات وغيرها من رائع مستودع الأسلحة.أنا بالفعل html, و لا يمكن تحديد المكان السلسلة, ولكن أنا بحاجة للحصول على "هذا.فعالية" قيمة, وهو في هذه الحالة هو 594.ولكن منذ يتغير دائما (وهكذا هي القيم الأخرى ، أنا غير قادر تأخذ فقط من موقف معين.أي مساعدة سيكون موضع تقدير كبير.

شكرا

مات --------- هذا هو بلصق الكود:

    function strengthObject() {
        this.base="168";
        this.effective="594";
        this.block="29";
        this.attack="1168";

هذا.مهرجان دبي السينمائي الدولي=هذا.فعالية هذا.القاعدة ؛


هل كانت مفيدة؟

المحلول

ويمكنك القيام بذلك باستخدام عبارات عادية:

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=Nordrassil&cn=Someone

عناوين المواقع هي نفس تلك التي تراها في متصفح الويب الخاص بك.

يرجى ملاحظة أنه على الرغم من يجب عليك تعيين وكيل المستخدم مجال طلب أن يكون ذلك من دعم متصفح يدعم XML نسخة من ملف أو تعود HTML بدلا من ذلك.يمكنني استخدام "Mozilla/5.0 فايرفوكس/2.0.0.1" كما عامل المستخدم في البرنامج أنه يعمل بشكل جيد.

وأيضا لا تجعل أكثر من عدد قليل من الطلبات في الثانية أو في المتوسط أكثر من طلب واحد كل 3 أو 4 ثوان أو كتل الموقع IP الخاص بك لبضع ساعات ...

وطريقة واحدة سيكون لاستخدام تعبير عادي لاستخراج هذه القيمة من مصدر HTML:

this.effective="(\d+)"

لاحظ أن يكشط HTML ليس حلا مثاليا (على سبيل المثال، قد كسر عندما شكل التغييرات HTML) ولكن أنا لا أعرف عن "نجاح باهر ترسانة" و ما هي الطرق الأخرى هناك للحصول على هذه المعلومات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top