Doplnění řetězce na počet znaků – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Doplnění řetězce na počet znaků – JavaScript, AJAX, jQuery – Fórum – Programujte.comDoplnění řetězce na počet znaků – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Davids0
Newbie
26. 7. 2007   #1
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
dalaman0
Věrný člen
28. 7. 2007   #2
-
0
-
Nahlásit jako SPAM
IP: ...–
Lepšie je mať psa na saláme ako salámu pod psom !!!
Petroff0
Věrný člen
5. 9. 2007   #3
-
0
-

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"

Nahlásit jako SPAM
IP: ...–
Prog.0
Věrný člen
6. 9. 2007   #4
-
0
-

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().

Nahlásit jako SPAM
IP: ...–
Prog.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Pocet znaku — založil jeckop

UTF-8 Pocet znaku — založil sparky29

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý