Autor | Zpráva | ||
---|---|---|---|
blaaablaaa Profil |
#1 · Zasláno: 10. 11. 2010, 11:29:59
Ahoj,
potřebuji v JS rozdělit text po větách (tzn. končí tečkou), pokud blok textu přesáhne určitou délku. Tzn. mám např text "Ahoj. Jsem Karel. Mám <a href="http://www.jpw.cz">auto</a>. Velké auto." a chci ho rozdělit do pole po 10 znacích: 1. Ahoj. Jsem Karel. 2. Mám <a href="http://www.jpw.cz">auto</a>. 3. Velké auto. Tzn. chci najit prvni tecku po 10 znacich, ktera neni v odkaze ci obrazku (v ostatnich tagech muze byt), a rozdelit text. Vytvoril jsem toto "dilo", ktere nefunguje (chci delit pokud je blok delsi nez 300 znaku): var texts = new Array(); while ( text.length > 1000 ) { var err = false; var tmp_index = 300; var index = 500; do { index = text.indexOf(".", tmp_index); for ( i = index; i<text.length; i++) { if ( text[i] == "<" ) { err = false; break; } if ( text[i] == ">" ) { tmp_index=i+1; err = true; break; } } } while( err == true ); texts.push(text.substr(0, index + 1)); text = text.substr(index + 1, text.length-index); } texts.push(text); Existuje nejake lepsi (funkcni) reseni? |
||
mark92 Profil |
#2 · Zasláno: 10. 11. 2010, 17:07:12
Čo tak toto?
<script> var text = "Ahoj. Jsem Karel. Mám <a href=\"http://www.jpw.cz\">auto</a>. Velké auto."; var texty = new Array(""); var len = text.length; var tag = false; var metaznak = false; var veta = 0; for (a=0; a<len; a++) { var znak = text.charAt(a); if (znak=="\\") metaznak=true; if (!metaznak) { if (znak=="<") tag = true; if (znak==">") tag = false; } if (znak=="." && !metaznak && !tag && a>10) { texty[veta] += "."; veta++; texty[veta] = ""; continue; } texty[veta] += znak; if (znak!=="\\" && metaznak) metaznak = false; } for (a=0; a<veta; a++) document.write(texty[a]+"<br>"); </script> |
||
panther Profil |
#3 · Zasláno: 10. 11. 2010, 17:24:15 · Upravil/a: panther
mark92:
ač nejsem JavaScriptař, při zběžném pohledu na ř. 16 a 17 narazíš, pokud bude v textu většítko nebo menšítko. Pokud ho v proměnné „text“ převedeš na entitu, nejspíše ti nebude muset vcházet ta podmínka s délkou 10 znaků ve větě. |
||
blaaablaaa Profil |
#4 · Zasláno: 11. 11. 2010, 11:30:43
panther: < a > jsou prevedeny na entity. Text rozdeluji po 500 znacich, nepotrebuji presny pocet znaku, jen rozdelit text na mensi casti, takze mi toto reseni vyhovuje.
mark92: diky, funguje |
||
Časová prodleva: 13 let
|
0