Я использую следующие ванильные функции JavaScript в моем коде. Они используют регулярные выражения и indexOf
, но не требуют цитирования специальных символов в регулярных выражениях.
function addClass(el, cn) {
var c0 = (" " + el.className + " ").replace(/\s+/g, " "),
c1 = (" " + cn + " ").replace(/\s+/g, " ");
if (c0.indexOf(c1) < 0) {
el.className = (c0 + c1).replace(/\s+/g, " ").replace(/^ | $/g, "");
}
}
function delClass(el, cn) {
var c0 = (" " + el.className + " ").replace(/\s+/g, " "),
c1 = (" " + cn + " ").replace(/\s+/g, " ");
if (c0.indexOf(c1) >= 0) {
el.className = c0.replace(c1, " ").replace(/\s+/g, " ").replace(/^ | $/g, "");
}
}
Вы также можете использовать element.classList в современных браузерах.
Вы могли использовать grep
egrep -l \r'\$ *
Что-то вдоль линий:
perl -p -e 's[\r\n][WIN\n]; s[(?<!WIN)\n][UNIX\n]; s[\r][MAC\n];' FILENAME
Хотя некоторые из которых Regexp могут потребоваться переработка и приводящиесь.
Это выпустит ваш файл win, Mac или Unix в конце каждой строки. Хорошо, если ваш файл каким-то страшным беспорядком (или различимой) и имеет смешанные концовки.
Можно использовать file
инструмент, который скажет Вам тип об окончании строки. Или, Вы могли просто использовать dos2unix -U
, который преобразует все в окончания строки Unix, независимо от того, с чего это запустилось.
Unix использует один байт, 0x0A (Перевод строки), в то время как окна используют два байта, 0x0D 0x0A (Возврат каретки, Перевод строки).
, Если Вы никогда не видите 0x0D, тогда это - вероятный Unix. Если Вы видите пар 0x0D 0x0A тогда, это - вероятный MS-DOS.
Символ использования Windows 13 & 10 для окончания строки, Unix только один из них (я не делаю rememeber который). Таким образом, можно заменить символ 13 & 10 для символа 13 или 10 (тот, которые используют Unix).