В одном скрипте работает, в другом нет (код)
-
Всем добрый день, подскажите пожалуйста, в чем может быть дело, чего только уже не попробовал. Есть код:
function cyrill_to_latin(text){ var arrru = new Array ('Я','я','Ю','ю','Ч','ч','Ш','ш','Щ','щ','Ж','ж','А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н', 'О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ы','ы','Ь','ь','Ъ','ъ','Э','э'); var arren = new Array ('Ya','ya','Yu','yu','Ch','ch','Sh','sh','Sh','sh','Zh','zh','A','a','B','b','V','v','G','g','D','d','E','e','E','e','Z','z','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','R','r','S','s','T','t','U','u','F','f','H','h','C','c','Y','y','','','\'','\'','E', 'e'); for(var i=0; i<arrru.length; i++){ var reg = new RegExp(arrru[i], "g"); text = text.replace(reg, arren[i]); } return text; } [[LATIN_TEXT]] = cyrill_to_latin([[RUS_TEXT]]);
В одном скрипте все замечательно, в другом -
TypeError: Result of expression 'text.replace' [undefined] is not a function. во время выполнения действия 449684013
Уже голову сломал, что может быть не так. Всем заранее большое спасибо.
-
@lcatlas said in В одном скрипте работает, в другом нет (код):
Всем добрый день, подскажите пожалуйста, в чем может быть дело, чего только уже не попробовал. Есть код:
function cyrill_to_latin(text){ var arrru = new Array ('Я','я','Ю','ю','Ч','ч','Ш','ш','Щ','щ','Ж','ж','А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н', 'О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ы','ы','Ь','ь','Ъ','ъ','Э','э'); var arren = new Array ('Ya','ya','Yu','yu','Ch','ch','Sh','sh','Sh','sh','Zh','zh','A','a','B','b','V','v','G','g','D','d','E','e','E','e','Z','z','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','R','r','S','s','T','t','U','u','F','f','H','h','C','c','Y','y','','','\'','\'','E', 'e'); for(var i=0; i<arrru.length; i++){ var reg = new RegExp(arrru[i], "g"); text = text.replace(reg, arren[i]); } return text; } [[LATIN_TEXT]] = cyrill_to_latin([[RUS_TEXT]]);
В одном скрипте все замечательно, в другом -
TypeError: Result of expression 'text.replace' [undefined] is not a function. во время выполнения действия 449684013
Уже голову сломал, что может быть не так. Всем заранее большое спасибо.
метод replace применяется только к строкам, а вы ему передаёте или массив или число
-
Блин и правда, это случайный элемент списка, можно ли с этим что-то сделать? (
Уже тупки под утро, как обычно, после 15-16 часов писанины ))
-
@lcatlas said in В одном скрипте работает, в другом нет (код):
Блин и правда, это случайный элемент списка, можно ли с этим что-то сделать? (
Уже тупки под утро, как обычно, после 15-16 часов писанины ))
Ну принудительно переведите в строку .toString()
text = text.toString().replace(reg, arren[i]);
-
Немножечко подкинул ) Спасибо большое!
-
Вот рабочий пример по транслиту русских букв в латиницу, для использования в url или просто если нужно текст конвектировать.
[[TITLE]] = [[TITLE]][0].toLowerCase(); [[TITLE]] = [[TITLE]].toString().replace( /([а-яё])|([\s_-])|([^a-z\d])/gi, function( all, ch, space, words, i ) { if ( space || words ) { return space ? '-' : '-'; } var code = ch.charCodeAt(0), next = [[TITLE]].toString().charAt( i + 1 ), index = code == 1025 || code == 1105 ? 0 : code > 1071 ? code - 1071 : code - 1039, t = ['yo','a','b','v','g','d','e','zh', 'z','i','y','k','l','m','n','o','p', 'r','s','t','u','f','h','c','ch','sh', 'shch','','y','','e','yu','ya' ], next = next && next.toUpperCase() === next ? 1 : 0; return ch.toUpperCase() === ch ? next ? t[ index ].toUpperCase() : t[ index ].substr(0,1).toUpperCase() + t[ index ].substring(1) : t[ index ]; } );
-
@hamov, @Fox said in Ресурс список. Подстановка переменных.:
В BAS есть своя функция translit(), работает прекрасно, только пробелы в строке она заменяет точками.
[20:13:30] Поток №1 : Животные,Транспорт [20:13:32] Поток №1 : zhivotnye.transport
выполнить код
[[TRANSLATED_TEXT]] = translit([[TEXT]]).replace(/\./g, ' ')
-
@hamov мягко говоря ужасный код, но за нестандартное мышление 5 ))