ما هي أفضل طريقة لتحليل سلسلة للكلمات" سيئة " في ج#?

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

  •  13-09-2020
  •  | 
  •  

سؤال

أنا أفكر في شيء مثل:

foreach (var word in paragraph.split(' ')) {
  if (badWordArray.Contains(word) {
    // do something about it
  }
}

ولكن أنا متأكد من أن هناك طريقة أفضل.

شكرا مقدما!

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

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

المحلول

بينما تعمل طريقك ، قد يستغرق الأمر وقتا طويلا بعض الشيء.هناك استجابة رائعة هنا لسؤال سو السابق.على الرغم من أن السؤال يتحدث عن فب بدلا من ج# ، وأعتقد أنه يمكن استدار بسهولة.

تحرير لإضافة نموذج التعليمات البرمجية:

public string FilterWords(string inputWords) {
    Regex wordFilter = new Regex("(puppies|kittens|dolphins|crabs)");
    return wordFilter.Replace(inputWords, "<3");
}

يجب أن تعمل من أجلك ، أكثر أو أقل.

تحرير للإجابة على توضيح المرجع:

أنا لا أتطلع إلى إزالة البذاءات تلقائيا...بالنسبة لتطبيق الويب الخاص بي ، أريد أن يتم إخطاري إذا تم استخدام كلمة أراها "سيئة".

بقدر جزء استبدال أعلاه ، يمكنك معرفة ما إذا كان هناك شيء مباريات مثل ذلك:

public bool HasBadWords(string inputWords) {
    Regex wordFilter = new Regex("(puppies|kittens|dolphins|crabs)");
    return wordFilter.IsMatch(inputWords);
}

سوف يعود true إذا كانت السلسلة التي مررت بها تحتوي على أي كلمات في القائمة.

نصائح أخرى

في عملي، نضع بعض تصفية الكلمة السيئة التلقائية في برنامجنا (إنه أمر من الصدمة أن يستعرض المصدر ويتم تشغيله فجأة عبر صفيف يحتوي على عدة صفحات من الفحش).

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

  • كبير كل شيء في المدخلات
  • إزالة معظم غير الأبجدية الأبجدية (أي، فقط لصق أي مسافات، أو علامات الترقيم، إلخ.)
  • ثم افتراض أن شخصا ما يحاول نقل أرقام الحروف، قم بعمل شيء مثل هذا: استبدل الصفر مع O، 9 مع G، 5 مع S، إلخ (LI)

ثم احصل على بعض الأصدقاء لمحاولة كسرها.انها متعة.

هل يمكن أن تنظر في استخدام HashKey الأشياء أو Dictionary<T1, T2> بدلا من مجموعة كما باستخدام القاموس على سبيل المثال يمكن أن تجعل التعليمات البرمجية أكثر كفاءة, لأن .يحتوي على () يصبح الأسلوب .مفاتيح.يحتوي على () وهو وسيلة أكثر كفاءة.هذا صحيح بشكل خاص إذا كان لديك قائمة كبيرة من الألفاظ النابية (لست متأكدا من عددها!:)

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