سؤال

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

هذا ما لدي حتى الآن...

public string Truncate(string input, int characterLimit, string currID) {
    string output = input;

    // Check if the string is longer than the allowed amount
    // otherwise do nothing
    if (output.Length > characterLimit && characterLimit > 0) {

        // cut the string down to the maximum number of characters
        output = output.Substring(0, characterLimit);

        // Check if the character right after the truncate point was a space
        // if not, we are in the middle of a word and need to remove the rest of it
        if (input.Substring(output.Length, 1) != " ") {
            int LastSpace = output.LastIndexOf(" ");

            // if we found a space then, cut back to that space
            if (LastSpace != -1)
            {
                output = output.Substring(0, LastSpace);
            }
        }
        // end any anchors
        if (output.Contains("<a href")) {
            output += "</a>";
        }
        // Finally, add the "..." and end the paragraph
        output += "<br /><br />...<a href='Announcements.aspx?ID=" + currID + "'>see more</a></p>";
    }
    return output;
}

لكني لست سعيدًا بهذا. هل هناك طريقة أفضل للقيام بذلك؟ إذا تمكنت من تقديم حل جديد لهذا ، أو ربما اقتراحات بشأن ما يجب إضافته إلى ما لدي حتى الآن ، سيكون ذلك رائعًا.

إخلاء المسئولية: لم أعمل أبدًا مع C#، لذلك لست على دراية بالمفاهيم المتعلقة باللغة ... أنا أفعل هذا لأنني لا بد لي من الاختيار.

شكرا ، هريستو

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

المحلول

استخدم الأداة الصحيحة للمشكلة.

HTML ليس تنسيقًا بسيطًا لتحليله. أود أن أنصحك باستخدام ملف تم إثبات ذلك ، المحلل الموجود بدلا من لف الخاص بك. إذا كنت تعلم أنك ستتحلى فقط XHTML - فيمكنك استخدام محلل XML بدلاً من ذلك.

هذه هي الطرق الوحيدة الموثوقة لأداء العمليات على HTML التي ستحافظ على التمثيل الدلالي.

لا تحاول استخدام التعبيرات العادية. HTML ليست لغة منتظمة ولا يمكن أن تتسبب إلا في حزنك والبؤس في هذا الاتجاه.

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