غالبًا ما أرى شريط Post يمنع محتوى نشر المستخدمين المختلفين ، وفكرت في كيفية تنفيذ هذا. فكرت في استخدام سلاسل لاستبدالها لتنفيذها ، لكن هذه الكفاءة منخفضة للغاية ولا يمكن أن تضمن أطول تطابق. هذه هي فكرتي الأولية في ذلك الوقت. في مشروع عملت عليه مؤخرًا ، كنت بحاجة إلى منع بعض المحتوى ، وقمت بتحليل هذه المشكلة مرة أخرى ، وأخيراً قمت بتكوين الكود التالي.
/ ***@الوصف: تطبيق دالة الكلمات المقنعة*/ package cn.yicha.novel.search.util ؛ استيراد java.io.bufferedreader ؛ استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.filenotfoundException ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstreamreader ؛ استيراد java.util.hashset ؛ استيراد cn.yicha.novel.search.config.config ؛ الطبقة العامة ممنوع {private static forbidden = new Forbidden () ؛ // Mask Word Hashset Hashset <String> CeyyString = new Hashset <String> () ؛ static int static int maxlength = character.max_value ؛ . Private Forbidden () {loadforbidden (config.getClassRoot () + "Forbidden.txt") ؛ } getforddden static ثابتة عامة () {return forbidden ؛ } / ** * param str * return * description: تم إخفاء سلسلة الإدخال لتحقيق أقصى قدر من مطابقة الطول * / string public (string str) {if (str == null) {return null ؛ } StringBuffer StringBuffer = new StringBuffer () ؛ int start = 0 ؛ لـ (int i = 0 ؛ i <str.length () ؛) {int at = str.charat (i) ؛ if (keylength [at] == null) {i ++ ؛ يكمل؛ } آخر {int ml = 0 ؛ لـ (Object obj: keylength [at] .toarray ()) {int len = ((integer) obj) .intvalue () ؛ if (i + len <= str.length ()) {string s = str.substring (i ، i + len) ؛ if (KeyString.contains (s)) {// الحد الأقصى للطول مطابقة ml = len> ml؟ لين: مل ؛ }}} if (ml> 0) {StringBuffer.Append (str.substring (start ، i)). إلحاق ("***") ؛ i += ml ؛ ابدأ = i ؛ } آخر {i ++ ؛ }}}} if (start <str.length ()) {stringBuffer.append (str.substring (start)) ؛ } return stringBuffer.toString () ؛ ) القيمة ، أي ، الموضع الذي يتم فيه تخزين المعلومات ذات الصلة في الصفيف ،* description: إذا حصلت "Hello" على القيمة int "أنت" هي 20320 ، أي أن المعلومات ذات الصلة "Hello" يتم تخزينها في موضع 20320 من المصفوفة* @DRISTER: تم تخزين طول الموقف في كل جزء من الموقف. public void loadforbidden (string path) {file forbiddenfile = new file (path) ؛ FileInputStream FileInputStream ؛ حاول {fileInputStream = جديد fileInputStream (ForbiddenFile) ؛ inputStreamReader inputStreamReader = جديد inputStreamReader (fileInputStream ، "UTF-8") ؛ BufferredReader BufferedReader = جديد BufferEdReader (inputStreamReader) ؛ سلسلة S ؛ بينما ((s = bufferedReader.ReadLine ())! = null) {s = s.trim () ؛ if (s.length ()> 0) {keystring.add (s) ؛ int i = s.charat (0) ؛ if (keylength [i] == null) {// mask طول كلمة hashset <integer> a = new hashset <integer> () ؛ A.Add (S.Length ()) ؛ keylength [i] = a ؛ } آخر {keylength [i] .add (s.length ()) ؛ }}} fileInputStream.close () ؛ BufferedReader.Close () ؛ fileInputStream.close () ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} public static void main (string [] args) {// system.out.println (forbidden.getForbidden (). read ("AV Actress nihao")) ؛ int i = 'you' ؛ system.out.println (i) ؛ }}ما ورد أعلاه هو رمز المفتاح لجافا لتنفيذ وظيفة Word Word. آمل أن يكون ذلك مفيدًا لتعلم الجميع.