Převod telefonního čísla na slovo
Jste také jedním ze šťastlivců s nezapamatovatelným telefonním číslem? Pak se vám možná bude hodit jednoduchý skript, s jehož pomocí si ověříte, zda byste nemohli na své vizitky místo složitého „602 397 378“ tisknout třeba elegantní „602 EXPERT“.
Psaní telefonního čísla pomocí písmen využívá toho, že na klávesnicích moderních telefonů jsou jednotlivým číslicím přiřazena písmena. Protože na většinu číslic připadá více než jedno písmeno, lze tímto způsobem z většiny šestimístných číslic (tři čísla předčíslí pro tentokrát neuvažujeme) vytvořit několik set písmenných kombinací. S trochou štěstí tak lze mnohé „obyčejné“ telefonní číslo nahradit profesionálně znějícím aliasem. I když je tento způsob psaní čísel hojně rozšířen spíše na západ od našich hranic, první vlaštovky se už drahnou dobu objevují také u nás.
Ve formuláři příkladu zadejte své telefonní číslo a stiskněte tlačítko „Vypsat možnosti“. Všechny dostupné písmenné varianty vašeho telefonního čísla se zobrazí v dalším textovém poli.
Kód použitý v příkladu
Základem výše uvedeného miniprográmku je jednoduchý formulář, který obsahuje jedno vstupní pole, jedno tlačítko a výstupní „textarea“ pole. HTML kód formuláře (z nějž byly pro jednoduchost vypuštěny formátovací tagy tabulky) může vypadat třeba takto:
<form name=“Form1″>
<input maxLength=“6″ size=“6″ name=“input“>
<input onclick=“compute(this.form)“ type=“button“ value=“Vypsat možnosti“>
<textarea name=“TextArea1″ rows=“15″ cols=“25″></textarea>
</form>
Po stisku formulářového tlačítka je volána funkce compute, která nejprve zkontroluje platnost vstupu a poté vygeneruje všechny možné písmenné varianty telefonního čísla. Její kód si ovšem ukážeme až nakonec, nejprve je třeba nadefinovat některé pomocné proměnné a funkce.
Pomocné proměnné jsou čtyři. Proměnná fLeft slouží při vypisování již hotových variant do textového pole a indikuje, zda výpis probíhá v levém nebo pravém sloupci. Do řetězcové proměnné nn je generován vlastní seznam všech jmen, proměnná cnt obsahuje celkový počet těchto jmen. Nejzajímavější je proměnná dd, která je vlastně jednorozměrným polem řetězců, přičemž řetězec na pozici X obsahuje všechna písmena, jež jsou variantami pro číslici X:
var dd = [ „0“, „1“, „ABC“, „DEF“, „GHI“, „JKL“, „MNO“, „PQRS“, „TUV“, „WXYZ“ ];
var nn;
var cnt;
var fLeft=true;
Hlavní práci při výpisu dostupných variant odvede funkce Translate. Aby nebylo třeba procházet polem dd v několika zanořených smyčkách a pracně hlídat několik indexů, je funkce napsaná jako rekurzivní. Jak už to u rekurzivních funkcí bývá, popis chování funkce je několikanásobně složitější než funkce samotná. Ze zdrojového kódu by nicméně její chování mělo být dostatečně zřejmé:
function Translate( inStr, toStr ) {
if( inStr.length > 0 ) {
var a = 1 * inStr.substring(0,1);
var i;
for( i=0; i<dd[a].length; i++ ) {
Translate(inStr.substring(1), toStr + dd[a].substring(i,i+1));
}
} else {
nn += toStr + (fLeft ? “ “ : „\n“);
fLeft = !fLeft;
cnt += 1;
}
}
Zbývá už jen maličkost, totiž kód již dříve zmíněné funkce compute. Jejím úkolem je kontrola vstupu, inicializace pomocných proměnných, volání funkce Translate a nakonec přepis výsledku do příslušného formulářového pole:
function compute(form) {
var txt = form.input.value;
if (txt.length!=6 || isNaN(txt)) {
alert („Zadané číslo musí obsahovat 6 číslic.“);
form.input.select();
form.input.focus();
form.TextArea1.value = „Špatný vstup…“
return;
}
nn=““; cnt = 0;
Translate( txt, „“ );
form.TextArea1.value = „Číslo: “ + txt + „\n\n“ + nn + „\nCelkem: “ + cnt + “ možností“;
}
Pro zájemce je celý zdrojový kód příkladu k dispozici. Přeji hodně štěstí při hledání aliasu.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Aktualizujete svoji .NET webovou aplikaci? Může se hodit app_offline.htm
10. července 2024 -
Jak nainstalovat šablonu ve WordPressu
23. července 2024 -
Aukce CZ domén: Jak vydražit expirovanou CZ doménu?
12. června 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024