Discussione:
Togliere spazi e caratteri speciali da una stringa
(troppo vecchio per rispondere)
MarcoSF
2010-06-29 13:41:25 UTC
Permalink
Salve a tutto il NG io avrei un problema ossia:
Io devo prendere in INPUT una striga lunga 30 che è la targa di un
camion motrice piu rimorchio. IL problema e che chi inserisce i dati
lo fa a caso e mi mette spazi e caratteri speciali a caso come gli
pare!! C'e una funzione che mi toglie tutti gli spazi e i caratteri
non alfanumerici
ES:
AC456NX - AD896SD DOVREBBE DIVENTARE AC456NXAD896SD
Grazie per l'aiuto
Claudio Manente
2010-06-29 14:06:11 UTC
Permalink
Post by MarcoSF
Io devo prendere in INPUT una striga lunga 30 che è la targa di un
camion motrice piu rimorchio. IL problema e che chi inserisce i dati
lo fa a caso e mi mette spazi e caratteri speciali a caso come gli
pare!! C'e una funzione che mi toglie tutti gli spazi e i caratteri
non alfanumerici
AC456NX - AD896SD DOVREBBE DIVENTARE AC456NXAD896SD
Grazie per l'aiuto
Non se se esista una sola funzione per fare tutto.

Io farei così:

Do %Len(%TRIM(VAR)) I
If %Subst(VAR:I:1) < 'A' or %Subst(VAR:I:1) > '9'
VAR = %replace ('': VAR: I: 1)
EndIf
EndDo


Claudio
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Claudio Manente
2010-06-29 14:08:29 UTC
Permalink
Post by Claudio Manente
Do %Len(%TRIM(VAR)) I
If %Subst(VAR:I:1) < 'A' or %Subst(VAR:I:1) > '9'
VAR = %replace ('': VAR: I: 1)
EndIf
EndDo
Do %Len(%TRIMR(VAR)) I

Con il trimR

Claudio
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
a***@deejaymail.it
2010-06-29 14:42:42 UTC
Permalink
con trimR ti toglie gli spazi di destra ma non i caratteri speciali in
mezzo alla stringa.

puoi usare %xlate o %replace ma devi definire nel programma quali sono
i caratteri speciali che vuoi eliminare.

Se poi ne trovi uno che non avevi previsto ?

forse la prima di Claudio è la migliore.


p.s. In questo momento ho lo stesso problema ma devo farlo in sql

qualcuno ha idea ?
ho fatto la replace di una replace ma va in errore il motore sql (rel.
5.3)
ciao
Alessandro
Stefano P.
2010-06-29 15:21:17 UTC
Permalink
Post by a***@deejaymail.it
p.s. In questo momento ho lo stesso problema ma devo farlo in sql
qualcuno ha idea ?
ho fatto la replace di una replace ma va in errore il motore sql (rel.
5.3)
Definisci una "udf" che esegue la logica - ad esempio quella descritta
sopra - in un linguaggio ad alto livello.
Post by a***@deejaymail.it
ciao
Alessandro
HTH
Stefano P.
a***@deejaymail.it
2010-06-30 06:54:12 UTC
Permalink
Post by Stefano P.
Definisci una "udf" che esegue la logica - ad esempio quella descritta
sopra - in un linguaggio ad alto livello.
    Stefano P.
non ho mai usato le udf, in giornata spero di riuscire a provarci.
se la faccio in rpgle serve compilare in qualche modo particolare ?

grazie
ciao
Stefano P.
2010-06-30 07:15:19 UTC
Permalink
Post by a***@deejaymail.it
Post by Stefano P.
Definisci una "udf" che esegue la logica - ad esempio quella descritta
sopra - in un linguaggio ad alto livello.
non ho mai usato le udf, in giornata spero di riuscire a provarci.
se la faccio in rpgle serve compilare in qualche modo particolare ?
Puoi sia utilizzare un programma che un service program e, a mio
modesto parere, per questo genere di problema un service program è
preferibile.
Dato che l'udf è una funzione di riga quindi la funzione viene
chiamata ad ogni riga, in generale *quando è possibile* (dipende dalla
logica del programma) cerca di non chiudere il programma con "SETON
LR" ma solo "in return".

Per farti un'idea di come scriverla e registrarla, dai un'occhiata -
oltre che all'InfoCenter - ai molti post che abbiamo fatto finora nel
newsgroup...
Post by a***@deejaymail.it
grazie
ciao
Saluti
Stefano P.

Claudio Manente
2010-06-30 06:27:04 UTC
Permalink
Post by a***@deejaymail.it
con trimR ti toglie gli spazi di destra ma non i caratteri speciali in
mezzo alla stringa.
Diciamo che lo so che toglie solo gli spazi di destra, ma il secondo post
l'ho fatto per completare il primo in quanto con la normale TRIM nel caso
ci siano degli spazi sulle prime posizione il codice descritto non
funziona.

Saluti

Claudio
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Loading...