اليوم، واجهت مشكلة: كيفية تمييز الكلمات الرئيسية غير الحساسة لحالة الأحرف في صفحة الويب على سبيل المثال: النص abcaBcabCaBCabcaBCa، والكلمة الرئيسية bc، في حالة عدم حساسية حالة الأحرف، يوجد إجمالي 6 مطابقات.
ثم ما يتم عرضه على صفحة الويب هو abcaBcabCaBCabcaBCa.
يفكر الكثير من الناس في وظيفة الاستبدال. النموذج الأولي هو
استبدال (سلسلة، العثور على، استبدال مع [، بدء [، العد [، قارن]]])
السلسلة المطلوبة، تعبير السلسلة، الذي يحتوي على السلسلة الفرعية المراد استبدالها
ابحث عن الخيار المطلوب، السلسلة الفرعية التي يتم البحث عنها
مطلوب استبدال مع السلسلة الفرعية المستخدمة للاستبدال
البدء اختياري، موضع بدء البحث عن سلاسل فرعية، الافتراضي هو 1
العد اختياري، عدد استبدالات السلسلة الفرعية المراد تنفيذها، الافتراضي هو -1، مما يشير إلى جميع الاستبدالات الممكنة
مقارنة اختيارية، وضع المقارنة، 0: مقارنة ثنائية؛ 1: مقارنة النص
على الرغم من أن المعلمة الأخيرة يمكن أن تحل مشكلة عدم حساسية حالة الأحرف، فما الذي يجب استبداله؟
لأنه من المثال، تم البحث عن bc وbc وbC وBC جميعًا، ولكن لا يمكن استبدالها بشكل موحد بنص واحد.
لذلك، استخدم وظيفة Instr لمساعدتنا.
ابحث من السلسلة المصدر، من اليسار إلى اليمين، في كل مرة يتم العثور على تطابق. فقط اتبع الخطوات الثلاث
1. قم بإخراج السلسلة الموجودة على يسار العنصر المطابق
2. قم بتطبيق العنصر المطابق على النمط <span> ثم قم بإخراجه
3. كرر الخطوتين السابقتين واستمر في البحث عن السلسلة التي على اليمين حتى نهاية البحث
الرمز هو كما يلي:
انسخ رمز الكود كما يلي:
تسليط الضوء على الوظيفة العامة (S، F)
خافت ليرة تركية، tM، tR، ك
ليرة تركية=
tM=
ر = س
ك=instr(1,tR,F,1)
افعل بينما k>0
tL=tL واليسار(tR,k-1)
tM = منتصف (ر، ك، لين (F))
tL=tL & <span style='color:red'> & tM & </span>
tR=يمين(tR,لين(tR)-لين(F)-k+1)
ك=instr(1,tR,F,1)
حلقة
تسليط الضوء = tL & tR
وظيفة النهاية
عند الاتصال يكون الكود كالتالي:
انسخ رمز الكود كما يلي:
tS=abcaBcabCaBCabcaBCa
tF = قبل الميلاد
الاستجابة. الكتابة (TS)
استجابة.اكتب(<br/>)
الاستجابة.الكتابة (تسليط الضوء (tS، tF))
بهذه الطريقة، يبدو المثال في البداية
من ناحية أخرى، هل تفكر فيما إذا كان استخدام التعبيرات العادية أكثر ملاءمة؟ حاولت عدة مرات بدون نتيجة. دعونا نرى أي خبير يستخدم القواعد العادية لحل هذه المشكلة.
بعد كتابة المقال، قدم مستخدم الإنترنت Yugong حلاً للتعبير النمطي. تم اختباره ووجد أنه صحيح. الآن تم لصق الكود الخاص به أدناه. شكرا جزيلا له.
شفرة
انسخ رمز الكود كما يلي:
تمييز الوظيفة (S،F)
خافت regEx
قم بتعيين regEx = New RegExp
regEx.IgnoreCase = صحيح
regEx.Global = صحيح
regEx.Pattern = ( & F & )
HighLight = regEx.Replace(S,<span style='color:red'>$1</span>)
وظيفة النهاية
تسليط الضوء على الاستجابة (abcaBcabCaBCabcaBCa، قبل الميلاد)