Замена диакритических знаков в JavaScript

Ничего особенного. Попробуйте создать новую библиотеку классов с именем "Animal" и добавьте следующий код:

namespace Animal
{
    public class Dog
    {
        public string Bark()
        {
            return "Woof!";
        }
    }
}

Постройте проект (для создания .dll). Вы можете найти .dll в \bin\.

Теперь откройте PowerShell и введите этот код:

Add-Type -Path "C:\...\Projects\Animal\Animal\bin\Debug\Animal.dll"
$dog = [Animal.Dog]::new()
$dog.Bark()

Выход

enter image description here

16
задан Martijn Pieters 6 September 2017 в 10:02
поделиться

3 ответа

Если вы хотите сделать это полностью на стороне клиента, Я думаю, ваш единственный вариант - это какая-то таблица поиска. Вот отправная точка, написанная парнем по имени Олави Иваск в его блоге ...

function replaceDiacritics(s)
{
    var s;

    var diacritics =[
        /[\300-\306]/g, /[\340-\346]/g,  // A, a
        /[\310-\313]/g, /[\350-\353]/g,  // E, e
        /[\314-\317]/g, /[\354-\357]/g,  // I, i
        /[\322-\330]/g, /[\362-\370]/g,  // O, o
        /[\331-\334]/g, /[\371-\374]/g,  // U, u
        /[\321]/g, /[\361]/g, // N, n
        /[\307]/g, /[\347]/g, // C, c
    ];

    var chars = ['A','a','E','e','I','i','O','o','U','u','N','n','C','c'];

    for (var i = 0; i < diacritics.length; i++)
    {
        s = s.replace(diacritics[i],chars[i]);
    }

    document.write(s);
}

Вы можете видеть, что это просто массив регулярных выражений для известных диакритических символов, отображающий их обратно на «простой» характер.

16
ответ дан 30 November 2019 в 15:12
поделиться

Вам понадобится карта преобразования, примерно такая:

function removeAccents(str) {
    var convMap = {
        "ă" : "a",
        "ş" : "s",
        "ţ" : "t"
    }
    for (var i in convMap) {
        str = str.replace(new RegExp(i, "g"), convMap[i]);
    }
    return str;
}

Или, если у вас есть доступ к iconv на вашем компьютере, вы могли бы использовать некоторые вызовы ajax для удаления акцентов с помощью // TRANSLIT для iconv параметр.

2
ответ дан 30 November 2019 в 15:12
поделиться

Простая модификация сценария Пола. Расширьте объект String

String.prototype.removeDiacritics = function() {
    var diacritics = [
        [/[\300-\306]/g, 'A'],
        [/[\340-\346]/g, 'a'],
        [/[\310-\313]/g, 'E'],
        [/[\350-\353]/g, 'e'],
        [/[\314-\317]/g, 'I'],
        [/[\354-\357]/g, 'i'],
        [/[\322-\330]/g, 'O'],
        [/[\362-\370]/g, 'o'],
        [/[\331-\334]/g, 'U'],
        [/[\371-\374]/g, 'u'],
        [/[\321]/g, 'N'],
        [/[\361]/g, 'n'],
        [/[\307]/g, 'C'],
        [/[\347]/g, 'c'],
    ];
    var s = this;
    for (var i = 0; i < diacritics.length; i++) {
        s = s.replace(diacritics[i][0], diacritics[i][1]);
    }
    return s;
}

. Теперь вы можете:

var wrongString = "hëllô";
alert(wrongString.removeDiacritics()); // alerts "hello"
8
ответ дан 30 November 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: