ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

28.03.2009, 11:27
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Сообщение от Дикс
чет я не понимаю..
charsArray - это объект.
как получить его длину?
Его длина тут не нужна.
Сообщение от Дикс
и как проверить наличие в нём текущей буквы?
Код:
(character in charsArray)
Код:
(charsArray[character])
|
|
|

28.03.2009, 11:27
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
var x = new Array();
x[0] = "Строка";
x[1] = "Еще строка";
var l = x.length; // l равно 2
по поводу поиска без перебора здесь:
http://habrahabr.ru/blogs/javascript/46787/
|
|
|

28.03.2009, 14:58
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
PHP код:
function translit(id) {
var charsArray = {
'а':'a',
'б':'b',
'в':'v',
'г':'g',
'д':'d',
'е':'e',
'ё':'jo',
'ж':'zh',
'з':'z',
'и':'i',
'й':'j',
'к':'k',
'л':'l',
'м':'m',
'н':'n',
'о':'o',
'п':'p',
'р':'r',
'с':'s',
'т':'t',
'у':'u',
'ф':'f',
'х':'h',
'ч':'ch',
'ц':'c',
'ш':'sh',
'щ':'csh',
'э':'e',
'ю':'ju',
'\я':'ja',
'ы':'y',
'ъ':'',
'ь':'\'',
' ':'_',
'\'':'',
'\"':'',
'\#':'',
'\$':'',
'\%':'',
'\&':'',
'\*':'',
'\,':'',
'\:':'',
'\;':'',
'\<':'',
'\>':'',
'\?':'',
'\[':'',
'\]':'',
'\^':'',
'\{':'',
'\}':'',
'\|':'',
'\!':'',
'\@':'',
'\(':'',
'\)':'',
'\-':'_',
'\=':'',
'\+':'',
'\/':'',
'\\':''
};
var character;
var field = document.getElementById(id);
var from = field.value.toLowerCase();
field.value = '';
for(var i = 0; i < 61; i++)
{
character = from.charAt(i);
field.value += (character in charsArray)? charsArray[character] : character;
}
}
Вот. здесь можно чета улучшить ещё?
|
|
|

30.03.2009, 19:41
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Сообщение от Дикс
Вот. здесь можно чета улучшить ещё?
Конечно.
Код:
for(var i = 0; i < 61; i++)
Обрабатываются только первые 62 знака исходного текста. Всё, что после - нет.
Код:
'\'': '', '\"': '', '\#': '', '\$': '',
'\%': '', '\&': '', '\*': '', '\,': '',
'\:': '', '\;': '', '\<': '', '\>': '',
'\?': '', '\[': '', '\]': '', '\^': '',
'\{': '', '\}': '', '\|': '', '\!': '',
'\@': '', '\(': '', '\)': '', '\-': '_',
'\=': '', '\+': '', '\/': '', '\\': ''
Экранирующий слэш нужен только в первом и последнем случаях. Зачем вообще удалять все эти символы - неясно.
Код:
var character;
var field = document.getElementById(id);
var from = field.value.toLowerCase();
field.value = '';
Лучше бы функции транслитерации только этим и заниматься, ей передали текст (и таблицу замен - опционально) - она вернула текст, не очищая там попутно левые поля, не заполняя их ничем, но это так, к слову.
Код:
character = from.charAt(i);
Пусть
Код:
field.value += (character in charsArray) ? charsArray[character] : character;
Можно было обойтись без этой проверки, немного развернув логику - проходить не по строке, а по самой таблице замен. (for..in)
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|