ahoj, javascript jsem nikdy nepouzival a ani nechci pouzivat, bohuzel potrebuju jednu vec, hledam nejakou funkci obdodnou v php je str_pad() - potrebuji funkci na doplění řetězce na urcitou delku, priklad:
mam promennou, ktera se postupne bude pricitat o 1: 0 1 2 3 4 5 6 7 8 9 10 11 ... n
a potrebuju ji dostat do retezce ve tvaru SO00000n - kde n se bude menit podle promenne, ale potrebuj aby se to menilo tak, ze az bude ta promenna 10 tak se zobrazu SO0000nn - potrebuji aby retezec mel stale 6 cisel, nevite cim by se to dalo udelat?
dekuji mnohokrat.
Fórum › JavaScript, AJAX, jQuery
Doplnění řetězce na počet znaků
UTFG :)
Prvy odkaz v googli, ked som zadal 'str_pad javascript'
http://www.fobit.com/index.php?article=JavaScript%3A%20str_pad
Existuje metoda STRING.substring(od), která umí vynechat znaky na začátku řetězce od=0 znamená celý, od=2 vynech první dva atd.
[podtrzene]Příklad: "TU144".substring(2) <=> "144"[/podtrzene]
Řekněme že v tvém případě hodnota nikdy nepřekročí 1000000.
Bude mít formát např. 0000xx pro 2 ciferný vstup, N=xx=42.
Konečný tvar získáš: "SO000042" =
"SO"+"000042"= "SO"+"1000042".substring(1)= "SO"+(1000042+"").substring(1)= "SO"+(1000000+42+"").substring(1)
[podtrzene]Tedy obecný výraz pro N=<0 až 999999> : RESULT = "SO"+(1000000+N+"").substring(1) [/podtrzene]
Poznámka:
Fígl, který vyrobí z čísla řetězec: 123+"" <=> "123" [ číslo+řetězec => řetězec ]
POZOR: 1+20+500+"" => "521"
ALE: ""+1+20+500 => "120500" ....protože vyhodnocování probíhá: (((""+1)+20)+500) => "120500"
To Petroff: Ja nevychádzam z údivu, tak jednoduché riešenie som ešte nevidel :-)
všeobecný str_pad-left (pomocou cyklu):
function str_lpad( input, length, pad_str )
{
var result = '', l = (input+'').length;
for(var i=0;i<length - l;i++) result+= pad_str.substr(i % pad_str.length,1);
return result+input;
}
RESULT = 'SO' + str_lpad( N, dlzka , '0' );
Zjednodušený str_pad (dopĺňa iba nuly!) -- improved algoritmus by Petroff ;-)
function str_lpad( input , length )
{
return (Math.pow(10,length)+input+'').substr(1);
}
RESULT = 'SO' + str_lpad( N, dlzka );
To Davids:
Ak to nepotrebuješ všeobecne, ale len na jednom mieste, tak jednoznačne použi Petrofove riešenie:
RESULT = "SO"+(1000000+N+"").substring(1)
Ak však budeš používat str_pad častejšie, s rôznymi dĺžkami, vyber si jednu z tých funkcií. Chcelo by to otestovať, ktorá varianta bude rýchlejšia... cyklus vs. Math.pow().
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pocet znaku — založil jeckop
Nacteni znaků ze suboru do řetezce — založil Amater
Odebrání posledního znaku z řetězce — založil jenoc
UTF-8 Pocet znaku — založil sparky29
Změna řetězce podle počtu znaků — založil Slim
Moderátoři diskuze