如何检查字符串是否包含阿拉伯字符 dart flutter

Dee*_*lot 4 dart flutter

我想检查字符串是否包含阿拉伯文本。两个字符串都是阿拉伯语。

\n\n

我尝试过使用 contains 方法,但它不起作用,不知道为什么会发生这种情况。

\n\n
_ayahList.forEach((item) {\n  if (item.arabic.trim().contains(searchTxt.trim())) {\n    _searchAyahList.add(item);\n  }\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它不起作用。

\n\n

编辑

\n\n

搜索文本\n\xd8\xa7\xd9\x84\xd9\x91\xd9\x8e\xd8\xb0\xd9\x90\xd9\x8a\xd9\x86\xd9\x8e \xd9\x83\xd9\x8e\xd9 \x81\xd9\x8e\xd8\xb1\xd9\x8f\xd9\x88\xd8\xa7 \xd9\x88\xd9\x8e\xd8\xb5\xd9\x8e\xd8\xaf\xd9\x91\xd9\x8f \xd9\x88\xd8\xa7\xd8\xb9\xd9\x8e\xd9\x86\xd8\xb3\xd9\x8e\xd8\xa8\xd9\x90\xd9\x8a\xd9\x84\xd9\x90\xd8 \xa7\xd9\x84

\n\n

阿拉伯文本\n\xd8\xa7\xd9\x84\xd9\x91\xd9\x8e\xd8\xb0\xd9\x90\xd9\x8a\xd9\x86\xd9\x8e \xd9\x83\xd9\x8e\xd9 \x81\xd9\x8e\xd8\xb1\xd9\x8f\xd9\x88\xd8\xa7 \xd9\x88\xd9\x8e\xd8\xb5\xd9\x8e\xd8\xaf\xd9\x91\xd9\x8f \xd9\x88\xd8\xa7\xd8\xb9\xd9\x8e\xd9\x86\xd8\xb3\xd9\x8e\xd8\xa8\xd9\x90\xd9\x8a\xd9\x84\xd9\x90\xd8 \xa7\xd9\x84\xd9\x84\xd9\x91\xd9\x8e\xd9\x87\xd9\x90 \xd8\xa3\xd9\x8e\xd8\xb6\xd9\x8e\xd9\x84\xd9\x91 \xd9\x8e \xd8\xa3\xd9\x8e\xd8\xb9\xd9\x92\xd9\x85\xd9\x8e\xd8\xa7\xd9\x84\xd9\x8e\xd9\x87\xd9\x8f\xd9 \x85\xd9\x92

\n\n

搜索文本 2:\n\xd8\xa7\xd9\x84\xd8\xb1\xd9\x91\xd9\x8e\xd8\xad\xd9\x90\xd9\x8a\xd9\x85\xd9\x90 \xd9\x85 \xd8\xad\xd9\x85\xd8\xaf

\n\n

阿拉伯语文本 2 :\n\xd8\xa8\xd9\x90\xd8\xb3\xd9\x92\xd9\x85\xd9\x90 \xd8\xa7\xd9\x84\xd9\x84\xd9\x90\xd9\x91 \xd9\x8e\xd9\x87\xd9\x90 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x91\xd9\x8e\xd8\xad\xd9\x92\xd9\x85\xd9\x8e\xd9 \xb0\xd9\x86\xd9\x90 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x91\xd9\x8e\xd8\xad\xd9\x90\xd9\x8a\xd9\x85\xd9\x90 \xd9\x85\xd8\xad\xd9\x85\xd8\xaf

\n

Ric*_*eap 9

它有助于首先规范化字符串,删除变音符号。

\n\n
void main() {\n  String t2 = \'\xd8\xa8\xd9\x90\xd8\xb3\xd9\x92\xd9\x85\xd9\x90 \xd8\xa7\xd9\x84\xd9\x84\xd9\x90\xd9\x91\xd9\x8e\xd9\x87\xd9\x90 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x91\xd9\x8e\xd8\xad\xd9\x92\xd9\x85\xd9\x8e\xd9\xb0\xd9\x86\xd9\x90 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x91\xd9\x8e\xd8\xad\xd9\x90\xd9\x8a\xd9\x85\xd9\x90 \xd9\x85\xd8\xad\xd9\x85\xd8\xaf\';\n  String s2 = \'\xd8\xa7\xd9\x84\xd8\xb1\xd9\x91\xd9\x8e\xd8\xad\xd9\x90\xd9\x8a\xd9\x85\xd9\x90 \xd9\x85\xd8\xad\xd9\x85\xd8\xaf\';\n\n  print(t2);\n  String nt2 = normalise(t2);\n  print(nt2);\n  print(t2.codeUnits);\n  print(nt2.codeUnits);\n\n  print(s2);\n  String ns2 = normalise(s2);\n  print(ns2);\n  print(s2.codeUnits);\n  print(ns2.codeUnits);\n\n  print(nt2.contains(ns2)); // prints "true"\n}\n\nString normalise(String input) => input\n    .replaceAll(\'\\u0610\', \'\') //ARABIC SIGN SALLALLAHOU ALAYHE WA SALLAM\n    .replaceAll(\'\\u0611\', \'\') //ARABIC SIGN ALAYHE ASSALLAM\n    .replaceAll(\'\\u0612\', \'\') //ARABIC SIGN RAHMATULLAH ALAYHE\n    .replaceAll(\'\\u0613\', \'\') //ARABIC SIGN RADI ALLAHOU ANHU\n    .replaceAll(\'\\u0614\', \'\') //ARABIC SIGN TAKHALLUS\n\n    //Remove koranic anotation\n    .replaceAll(\'\\u0615\', \'\') //ARABIC SMALL HIGH TAH\n    .replaceAll(\n        \'\\u0616\', \'\') //ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH\n    .replaceAll(\'\\u0617\', \'\') //ARABIC SMALL HIGH ZAIN\n    .replaceAll(\'\\u0618\', \'\') //ARABIC SMALL FATHA\n    .replaceAll(\'\\u0619\', \'\') //ARABIC SMALL DAMMA\n    .replaceAll(\'\\u061A\', \'\') //ARABIC SMALL KASRA\n    .replaceAll(\'\\u06D6\',\n        \'\') //ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA\n    .replaceAll(\'\\u06D7\',\n        \'\') //ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA\n    .replaceAll(\'\\u06D8\', \'\') //ARABIC SMALL HIGH MEEM INITIAL FORM\n    .replaceAll(\'\\u06D9\', \'\') //ARABIC SMALL HIGH LAM ALEF\n    .replaceAll(\'\\u06DA\', \'\') //ARABIC SMALL HIGH JEEM\n    .replaceAll(\'\\u06DB\', \'\') //ARABIC SMALL HIGH THREE DOTS\n    .replaceAll(\'\\u06DC\', \'\') //ARABIC SMALL HIGH SEEN\n    .replaceAll(\'\\u06DD\', \'\') //ARABIC END OF AYAH\n    .replaceAll(\'\\u06DE\', \'\') //ARABIC START OF RUB EL HIZB\n    .replaceAll(\'\\u06DF\', \'\') //ARABIC SMALL HIGH ROUNDED ZERO\n    .replaceAll(\'\\u06E0\', \'\') //ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO\n    .replaceAll(\'\\u06E1\', \'\') //ARABIC SMALL HIGH DOTLESS HEAD OF KHAH\n    .replaceAll(\'\\u06E2\', \'\') //ARABIC SMALL HIGH MEEM ISOLATED FORM\n    .replaceAll(\'\\u06E3\', \'\') //ARABIC SMALL LOW SEEN\n    .replaceAll(\'\\u06E4\', \'\') //ARABIC SMALL HIGH MADDA\n    .replaceAll(\'\\u06E5\', \'\') //ARABIC SMALL WAW\n    .replaceAll(\'\\u06E6\', \'\') //ARABIC SMALL YEH\n    .replaceAll(\'\\u06E7\', \'\') //ARABIC SMALL HIGH YEH\n    .replaceAll(\'\\u06E8\', \'\') //ARABIC SMALL HIGH NOON\n    .replaceAll(\'\\u06E9\', \'\') //ARABIC PLACE OF SAJDAH\n    .replaceAll(\'\\u06EA\', \'\') //ARABIC EMPTY CENTRE LOW STOP\n    .replaceAll(\'\\u06EB\', \'\') //ARABIC EMPTY CENTRE HIGH STOP\n    .replaceAll(\'\\u06EC\', \'\') //ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE\n    .replaceAll(\'\\u06ED\', \'\') //ARABIC SMALL LOW MEEM\n\n    //Remove tatweel\n    .replaceAll(\'\\u0640\', \'\')\n\n    //Remove tashkeel\n    .replaceAll(\'\\u064B\', \'\') //ARABIC FATHATAN\n    .replaceAll(\'\\u064C\', \'\') //ARABIC DAMMATAN\n    .replaceAll(\'\\u064D\', \'\') //ARABIC KASRATAN\n    .replaceAll(\'\\u064E\', \'\') //ARABIC FATHA\n    .replaceAll(\'\\u064F\', \'\') //ARABIC DAMMA\n    .replaceAll(\'\\u0650\', \'\') //ARABIC KASRA\n    .replaceAll(\'\\u0651\', \'\') //ARABIC SHADDA\n    .replaceAll(\'\\u0652\', \'\') //ARABIC SUKUN\n    .replaceAll(\'\\u0653\', \'\') //ARABIC MADDAH ABOVE\n    .replaceAll(\'\\u0654\', \'\') //ARABIC HAMZA ABOVE\n    .replaceAll(\'\\u0655\', \'\') //ARABIC HAMZA BELOW\n    .replaceAll(\'\\u0656\', \'\') //ARABIC SUBSCRIPT ALEF\n    .replaceAll(\'\\u0657\', \'\') //ARABIC INVERTED DAMMA\n    .replaceAll(\'\\u0658\', \'\') //ARABIC MARK NOON GHUNNA\n    .replaceAll(\'\\u0659\', \'\') //ARABIC ZWARAKAY\n    .replaceAll(\'\\u065A\', \'\') //ARABIC VOWEL SIGN SMALL V ABOVE\n    .replaceAll(\'\\u065B\', \'\') //ARABIC VOWEL SIGN INVERTED SMALL V ABOVE\n    .replaceAll(\'\\u065C\', \'\') //ARABIC VOWEL SIGN DOT BELOW\n    .replaceAll(\'\\u065D\', \'\') //ARABIC REVERSED DAMMA\n    .replaceAll(\'\\u065E\', \'\') //ARABIC FATHA WITH TWO DOTS\n    .replaceAll(\'\\u065F\', \'\') //ARABIC WAVY HAMZA BELOW\n    .replaceAll(\'\\u0670\', \'\') //ARABIC LETTER SUPERSCRIPT ALEF\n\n    //Replace Waw Hamza Above by Waw\n    .replaceAll(\'\\u0624\', \'\\u0648\')\n\n    //Replace Ta Marbuta by Ha\n    .replaceAll(\'\\u0629\', \'\\u0647\')\n\n    //Replace Ya\n    // and Ya Hamza Above by Alif Maksura\n    .replaceAll(\'\\u064A\', \'\\u0649\')\n    .replaceAll(\'\\u0626\', \'\\u0649\')\n\n    // Replace Alifs with Hamza Above/Below\n    // and with Madda Above by Alif\n    .replaceAll(\'\\u0622\', \'\\u0627\')\n    .replaceAll(\'\\u0623\', \'\\u0627\')\n    .replaceAll(\'\\u0625\', \'\\u0627\');\n
Run Code Online (Sandbox Code Playgroud)\n