| 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: 16 let
|
|||
0