Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here's a Javascript solution: <a href="http://lehelk.com/2011/05/06/script-to-remove-diacritics/" rel="nofollow">http://lehelk.com/2011/05/06/script-to-remove-diacritics/</a></p> <p>It basically uses regular expressions to brute force the conversion from the various diacritical characters to standard ASCII.</p> <p>It copes with lower case and capital letters, too, so your example would convert to "ALBAAIL".</p> <p>As others have mentioned, Javascript isn't Visual Studio, or .net, so I don't really know what kind of solution you are really looking for.</p> <p><strong>EDIT:</strong></p> <p>Okay, so according to your comment, you're coding in VB. That's cool, because I code in VB and have already converted the code I linked to into VB:</p> <pre><code>Public Function ParseTo819Internal(ByVal sendString As String, replaceChar As Char) As String Static x As Dictionary(Of String, String) If x Is Nothing Then x = New Dictionary(Of String, String) x.Add("A", "[\u0041\u24B6\uFF21\u1EA6\u1EA4\u1EAA\u1EA8\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u01DE\u1EA2\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]") x.Add("AA", "[\uA732]") x.Add("AE", "[\u01FC\u01E2]") x.Add("AO", "[\uA734]") x.Add("AU", "[\uA736]") x.Add("AV", "[\uA738\uA73A]") x.Add("AY", "[\uA73C]") x.Add("B", "[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]") x.Add("C", "[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u1E08\u0187\u023B\uA73E]") x.Add("D", "[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]") x.Add("DZ", "[\u01F1\u01C4]") x.Add("Dz", "[\u01F2\u01C5]") x.Add("E", "[\u0045\u24BA\uFF25\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]") x.Add("F", "[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]") x.Add("G", "[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]") x.Add("H", "[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]") x.Add("I", "[\u0049\u24BE\uFF29\u0128\u012A\u012C\u0130\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]") x.Add("J", "[\u004A\u24BF\uFF2A\u0134\u0248]") x.Add("K", "[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]") x.Add("L", "[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]") x.Add("LJ", "[\u01C7]") x.Add("Lj", "[\u01C8]") x.Add("M", "[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]") x.Add("N", "[\u004E\u24C3\uFF2E\u01F8\u0143\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]") x.Add("NJ", "[\u01CA]") x.Add("Nj", "[\u01CB]") x.Add("O", "[\u004F\u24C4\uFF2F\u1ED2\u1ED0\u1ED6\u1ED4\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u01FE\u0186\u019F\uA74A\uA74C]") x.Add("OI", "[\u01A2]") x.Add("OO", "[\uA74E]") x.Add("OU", "[\u0222]") x.Add("P", "[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]") x.Add("Q", "[\u0051\u24C6\uFF31\uA756\uA758\u024A]") x.Add("R", "[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]") x.Add("S", "[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]") x.Add("T", "[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]") x.Add("TZ", "[\uA728]") x.Add("U", "[\u0055\u24CA\uFF35\u0168\u1E78\u016A\u1E7A\u016C\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]") x.Add("V", "[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]") x.Add("VY", "[\uA760]") x.Add("W", "[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]") x.Add("X", "[\u0058\u24CD\uFF38\u1E8A\u1E8C]") x.Add("Y", "[\u0059\u24CE\uFF39\u1EF2\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]") x.Add("Z", "[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]") x.Add("a", "[\u0061\u24D0\uFF41\u1E9A\u1EA7\u1EA5\u1EAB\u1EA9\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u01DF\u1EA3\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]") x.Add("aa", "[\uA733]") x.Add("ae", "[\u01FD\u01E3]") x.Add("ao", "[\uA735]") x.Add("au", "[\uA737]") x.Add("av", "[\uA739\uA73B]") x.Add("ay", "[\uA73D]") x.Add("b", "[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]") x.Add("c", "[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u1E09\u0188\u023C\uA73F\u2184]") x.Add("d", "[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]") x.Add("dz", "[\u01F3\u01C6]") x.Add("e", "[\u0065\u24D4\uFF45\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]") x.Add("f", "[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]") x.Add("g", "[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]") x.Add("h", "[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]") x.Add("hv", "[\u0195]") x.Add("i", "[\u0069\u24D8\uFF49\u0129\u012B\u012D\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]") x.Add("j", "[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]") x.Add("k", "[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]") x.Add("l", "[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]") x.Add("lj", "[\u01C9]") x.Add("m", "[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]") x.Add("n", "[\u006E\u24DD\uFF4E\u01F9\u0144\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]") x.Add("nj", "[\u01CC]") x.Add("o", "[\u006F\u24DE\uFF4F\u1ED3\u1ED1\u1ED7\u1ED5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u01FF\u0254\uA74B\uA74D\u0275]") x.Add("oi", "[\u01A3]") x.Add("ou", "[\u0223]") x.Add("oo", "[\uA74F]") x.Add("p", "[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]") x.Add("q", "[\u0071\u24E0\uFF51\u024B\uA757\uA759]") x.Add("r", "[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]") x.Add("s", "[\u0073\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]") x.Add("t", "[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]") x.Add("tz", "[\uA729]") x.Add("u", "[\u0075\u24E4\uFF55\u0169\u1E79\u016B\u1E7B\u016D\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]") x.Add("v", "[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]") x.Add("vy", "[\uA761]") x.Add("w", "[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]") x.Add("x", "[\u0078\u24E7\uFF58\u1E8B\u1E8D]") x.Add("y", "[\u0079\u24E8\uFF59\u1EF3\u0177\u1EF9\u0233\u1E8F\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]") x.Add("z", "[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]") End If For Each keyIn In x.Keys sendString = Regex.Replace(sendString, x(keyIn), keyIn) Next 'Having replaced all recognised diacritical characters with plain letters, replace all remaining non-IBM819 characters with question marks sendString = Regex.Replace(sendString, "[^0-9a-zA-Z !""#$%&amp;'()*+,-./:;&lt;=&gt;?@\[\\\]^_`{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\s]", replaceChar) Return sendString End Function </code></pre> <p>This is a function to sanitise our input into <a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1" rel="nofollow">IBM819</a> format for our database so in addition to stripping out all of the accented characters, it also checks for any remaining non-compatible characters and replaces them with the <code>replaceChar</code>variable. I'm not too familiar with regular expressions, to be honest, but I think that if you use a value of <code>String.Empty</code> for <code>replaceChar</code> then it will simply delete all remaining unrecognised characters.</p> <p>If you're converting to straight ASCII or to a different codepage than IBM819, you will need to make alterations to the final regex.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload