Newsgroup: it.comp.lang.javascript
Titolo: Stringa che va a capo

Un software per il commercio elettronico mi restituisce delle stringhe che
dovrei intercettare in uno script
es.
a='stringarestituita'
il problema sorge quando mi viene restituita una stringa con degli a capo
(l'a capo è per fortuna all'inizio della stringa e questo semplifica forse
un pò il problema).
a questo punto il codice diventerebbe:
a='
resto della stringa dopo l'a capo'
cosa che a javascript non piace per niente.
Come risolvereste il problema?
--
"Non ti fare mai beffe di un drago vivo, pazzo di un Bilbo!"
m.vignocchiCHIOCCIOLAtiscalinetPUNTOit
Medusa

Dipende da cosa devi farci con la stringa; io convertirei acapo con <br>,
del tipo:
a=String(tuastringa).replace(/\n/g,"<br>").replace(/\r/g,"");

 Come risolvereste il problema?
Eviterei che mi metta il carriage return :)
Ma evidentemente non puoi mettere mano al codice che ti restituisce 
questa schifezza, altrimenti l'avresti gia' fatto.
In ogni caso, dipende "come" ti viene restituita la stringa. Esempio: 
stai lavorando server side con ASP/PHP/JSP e quella e' una variabile dei 
succitati linguaggi/enviroment? Oppure altro?
Di soluzioni ve ne sono. Inoltre: vuoi contemplare anche NS4.x o no?
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 a=String(tuastringa).replace(/\n/g,"<br>").replace(/\r/g,"");
Complimenti per la velocità ma non  mi sono spiegato bene.
Il softvare (consideralo tipo asp) processa la pagina prima e me la
restituisce con la stringa con l'a capo.
Come faccio a passarla a una variabile?
Come dici tu il codice mi diverrebbe:
a=String(
tuastringa).replace(/\n/g,"<br>").replace(/\r/g,"");
Naturalmente i Repla ce sono alternativi vero?


 Di soluzioni ve ne sono. Inoltre: vuoi contemplare anche NS4.x o no?
Semplificherei e andrei sul no tanto ns4 lo userà si e no l1% dei
naviganti... si aggiorneranno.
--
"Non ti fare mai beffe di un drago vivo, pazzo di un Bilbo!"
m.vignocchiCHIOCCIOLAtiscalinetPUNTOit
Medusa


devi lavorare lato server (asp), puoi?

 client-side.
Okay, ma cerco di spiegarmi meglio: Come diamine finisce la stringa 
nella tua pagina HTML? Da dove arriva? Come la recuperi? Come fai a 
dire, visto che non hai il controllo lato server, di "scriverla" in un 
certo punto? (come, ad esempio, dentro una variabile JS)
Una volta che saranno chiare le modalita' in cui recuperi la stringa e 
viene generata la pagina, possiamo pensare a qualche workaround.
-- 
C'ya,
ZER0


 devi lavorare lato server (asp), puoi?
Mi sa di no

Allora non mi viene in mente nulla: se non puoi lavorare lato server vuol
dire che ottieni gią lato client una stringa siffatta (Che segnala errore),
come puoi modificare un errore?
Scusa la curiositą, in che senso "non puoi lavorare lato server"? Lato
server genera questa pagina, se non puoi toccarlo non puoi toccare il
sorgente, ergo neanche lato client...

 viene generata la pagina, possiamo pensare a qualche workaround.
Ti posto il codice sorgente pari pari e la sua restituzione cosě il
workaround lo intavoliamo sicuramente ;)
per scremare le cose che secondo me non dovrebbero interessarti guarda solo
ciň che č compreso tra
****QUI****
Sul server c'č scritto:
<script>
function prodChk(){
  var a = '<input type=hidden name=chkProd value="' + prodCod(prodImg()) +
'">';
  return a;
}
  var i=0;
  var testo='<table border="0" width="100%" cellspacing="0"
cellpadding="0">'
  var corrNome = new Array()
  var corrUrl = new Array()
  var corrOpt = new Array()
  //inizio ciclo <ns@prodotti_correlati><!-- INIZIO_RIPETIZIONE -->
  corrNome[i] = '@NOME_PRODOTTO_CORRELATO@';
  corrUrl[i] = '@PRODOTTO_CORRELATO_URL@';
****QUI****
  corrOpt[i] = '<!-- INIZIO_OPZIONI -->@NOME_OPZIONE@ @VALORI_OPZIONE@<!--
FINE_OPZIONI -->';
****/QUI****
  if (i==0){testo = testo + '<tr><td><input type=checkbox name=chkProd
value="' + prodCod(corrUrl[i]) + '" style="display:none"></td></tr>' }
  else {testo = testo + '<tr><td width="65%" valign="middle"
align="left"><input type=checkbox name=chkProd value="' +
prodCod(corrUrl[i]) + '" onclick="cs(\'' + prodCod(corrUrl[i]) + '\')"><font
class="clsinfman"><a href='+corrUrl[i]+'>'+ corrNome[i] +'</a></font><input
type=text name=qty_ordered_' + prodCod(corrUrl[i]) + ' value=1 size=3
style="display:none"></td><td width="45%" valign="middle" align="left">' +
corrOpt[i] + '</td></tr>'}
  i++;
//<!-- FINE_RIPETIZIONE --></NS@PRODOTTI_CORRELATI>
  //fine ciclo
//
  if (i==0){testo=""}
//-->
</script>
Dopo la processazione da parte del softrware di commercio elettronico(ovvero
lato client) il mio Browser riceve:
<script>
function prodChk(){
  var a = '<input type=hidden name=chkProd value="' + prodCod(prodImg()) +
'">';
  return a;
}
  var i=0;
  var testo='<table border="0" width="100%" cellspacing="0"
cellpadding="0">'
  var corrNome = new Array()
  var corrUrl = new Array()
  var corrOpt = new Array()
  //inizio ciclo
  corrNome[i] = 'Impianti';
  corrUrl[i] =
'
http://www.starpromo.it/shoppromo/ns.asp?wci=prodinfo&lng=1040&cur=3057&pid
=ZCN00137&did=37';
  corrOpt[i] = '';
  if (i==0){testo = testo + '<tr><td><input type=checkbox name=chkProd
value="' + prodCod(corrUrl[i]) + '" style="display:none"></td></tr>' }
  else {testo = testo + '<tr><td width="65%" valign="middle"
align="left"><input type=checkbox name=chkProd value="' +
prodCod(corrUrl[i]) + '" onclick="cs(\'' + prodCod(corrUrl[i]) + '\')"><font
class="clsinfman"><a href='+corrUrl[i]+'>'+ corrNome[i] +'</a></font><input
type=text name=qty_ordered_' + prodCod(corrUrl[i]) + ' value=1 size=3
style="display:none"></td><td width="45%" valign="middle" align="left">' +
corrOpt[i] + '</td></tr>'}
  i++;
//
  corrNome[i] = 'Pers. Borse a 1 Colore';
  corrUrl[i] =
'
http://www.starpromo.it/shoppromo/ns.asp?wci=prodinfo&lng=1040&cur=3057&pid
=ZCN00229&did=36';
****QUI****
  corrOpt[i] = '
Colore <select name=Option1><option value=1>Bianco<option
value=2>Nero<option value=3>Rosso<option value=4>Verde<option
value=5>Giallo<option value=6>Arancio<option value=7>Blu<option
value=8>Oro<option value=9>Argento</select>';
****/QUI****
  if (i==0){testo = testo + '<tr><td><input type=checkbox name=chkProd
value="' + prodCod(corrUrl[i]) + '" style="display:none"></td></tr>' }
  else {testo = testo + '<tr><td width="65%" valign="middle"
align="left"><input type=checkbox name=chkProd value="' +
prodCod(corrUrl[i]) + '" onclick="cs(\'' + prodCod(corrUrl[i]) + '\')"><font
class="clsinfman"><a href='+corrUrl[i]+'>'+ corrNome[i] +'</a></font><input
type=text name=qty_ordered_' + prodCod(corrUrl[i]) + ' value=1 size=3
style="display:none"></td><td width="45%" valign="middle" align="left">' +
corrOpt[i] + '</td></tr>'}
  i++;
//
  //fine ciclo
//
  if (i==0){testo=""}
//-->
</script>


 ha scritto nel messaggio
news:b0lqu8$r45ng$1...@ID-147253.news.dfncis.de...

Errato certo che posso lavorare lato server ma non posso fare tutto (non č
asp o altro linguaggio totalmente gestibile).
Il software mi sostituisce dei tag suoi con nomi di prodotti,prezzi,opzioni
etc. e non posso dirgli :"guarda quell'a capo non me lo mettere"
ciņ che non posso fare č lavorare sull'interprete.
Comunque guardando le mie risposte a Zero dovresti capire.


 workaround lo intavoliamo sicuramente ;)
Il discorso e' complicatuccio, perche' non ho tutto il tempo di 
studiarmi la pagina.. il punto e' che non si tratta di stringhe 
normali.. e' codice HTML. Ergo ti chiedo, perche' devi porre tutto 
questo in una funzione? Non puoi semplicemente scrivere il codice?
Cmq sia, ti dico subito l'approccio che generalmente si usa in questi 
casi. Invece di usare una variabile array, usa un "controllo array".
Fai delle textarea nascoste che si chiamano allo stesso modo della tua 
variabile, e metti all'interno del tag il tuo valore. Poi da script lo 
recuperi con .value, e lo manipoli come piu' ti piace.
Il fatto che pero' sia gia' HTML il codice che devi inserire, fa 
presumere che il workaround migliore non sia questo, ma un'altro, se 
cambiato l'approccio con cui la pagina viene creata.


 recuperi con .value, e lo manipoli come piu' ti piace.
Lo supponevo avevo pensato anche io ad una soluzione del genere..
ma speravo ci fossero altre soluzioni.
Ciao e grazie


 ma speravo ci fossero altre soluzioni.
A livello pratico e' la stessa identica cosa, non ti cambia nulla. Ho 
detto textarea per agevolarti le cose, ma l'inserimento di contenuto in 
tag invece che in variabili e' una pratica abbastanza comune per talune 
tipi di applicazioni (basti pensare ad alcune applicazioni microsoft).
Inoltre, e' l'unica pratica che ti consente di fare cio' che vuoi. Se 
stessimo in PHP/Perl ci sarebbe stata una valida alternativa, ma in JS 
quella di non assegnare il contenuto direttamente ad una variabile e' 
l'unica strada che percorribile.
