Vai al contenuto
PLC Forum


Elimina spazi iniziali e finali di una stringa


Project75

Messaggi consigliati

Buongiorno ho una stringa del tipo '   S C-KT03486   ' , in pratica dovrei togliere gli spazi iniziali e finali della stringa e dovrei ottenere 

'S C-KT03486', OVVIAMENTE devo togliere gli eventuali spazi iniziali e finali della stringa, ma quelli tra un carattere ed un'altro no. Ovviamente operazione eseguita con codice scl.

Grazie mille a chi mi può aiutare. 

Link al commento
Condividi su altri siti


dina_supertramp

Togliere spazi all'inizio:

Utilizza l'istruzione che legge il primo carattere a sinistra (LEFT) e confronta se il carattere è uguale a spazio vuoto ' '.
Se il confronto è valido, cancella il primo carattere (DELETE).
Itera.
Se il confronto non è più valido, significa che ha trovato il primo carattere non vuoto della stringa.
 

Togliere spazi alla fine:
Utilizza l'istruzione che ti dice quanto è attualmente lunga a stringa (LEN, da non confondere con MAX_LEN)

Utilizza l'istruzione che legge l'ultimo carattere a destra (RIGHT) e confronta se il carattere è uguale a spazio vuoto ' '.
Se il confronto è valido, cancella l'ultimo carattere (DELETE). Sai quanto è lunga la scritta (istruzione LEN precedente), ergo sai qual è l'ultimo carattere, cioè quello a cui puntare con il delete.

Itera.
Se il confronto non è più valido, significa che hai cancellato tutti gli spazi vuoti alla fine.
 

 

Link al commento
Condividi su altri siti

22 minuti fa, dina_supertramp ha scritto:

Togliere spazi all'inizio:

Utilizza l'istruzione che legge il primo carattere a sinistra (LEFT) e confronta se il carattere è uguale a spazio vuoto ' '.
Se il confronto è valido, cancella il primo carattere (DELETE).
Itera.
Se il confronto non è più valido, significa che ha trovato il primo carattere non vuoto della stringa.
 

Togliere spazi alla fine:
Utilizza l'istruzione che ti dice quanto è attualmente lunga a stringa (LEN, da non confondere con MAX_LEN)

Utilizza l'istruzione che legge l'ultimo carattere a destra (RIGHT) e confronta se il carattere è uguale a spazio vuoto ' '.
Se il confronto è valido, cancella l'ultimo carattere (DELETE). Sai quanto è lunga la scritta (istruzione LEN precedente), ergo sai qual è l'ultimo carattere, cioè quello a cui puntare con il delete.

Itera.
Se il confronto non è più valido, significa che hai cancellato tutti gli spazi vuoti alla fine.
 

 

Grazie mille per la risposta tempestiva, così facendo cancella un solo spazio iniziale o finale, o eventualmente più spazi iniziali e più spazi finali? 

Link al commento
Condividi su altri siti

dina_supertramp

La prima operazione, che cancella il primo carattere della stringa (delete che punta al char 1), sarà all'interno di un IF che verifica che il carattere più a sinistra è uguale a spazio vuoto.

IF
    carattere a sinistra = vuoto
THEN
    cancella carattere all posizione 1
ELSE
;
END_IF;

 

La seconda operazione, che cancella l'ultimo carattere della stringa (delete che punta all'ultimo char), sarà all'interno di un IF che verifica che l'ultimo carattere è uguale a spazio vuoto.


LEGGI LUNGHEZZA STRINGA e restituisci il valore in una variabile INT "LunghezzaAttualeStringa"

 

IF
    carattere a destra = vuoto
THEN
    cancella carattere alla posizione "LunghezzaAttualeStringa"
ELSE
;
END_IF;

Al primo ciclo: entra nell'IF, che è verificato, cancella il carattere vuoto
Al secondo ciclo: entra nell'IF, che è verificato, cancella il carattere vuoto

Al n-ciclo: non entra nell'IF perché non è verificato, entra nell'ELSE, non fa nulla ( ; ).
Quindi, per rispondere alla tua domanda: cancella spazi vuoti all'inizio e alla fine finché ne trova 🙂

 

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

Ricordi male o c'è anche la TRIM ?

 

mi correggo... c'è ma a livello script nel pannello....

Modificato: da drn5
Link al commento
Condividi su altri siti

Anch'io ho sempre fatto due for per annullare gli spazi, c'è anche un funzione che trovi in rete da caricare se non vuoi farla tu.

Gli si da in ingresso e in uscita della stringa da trimmerare.

Link al commento
Condividi su altri siti

2 minuti fa, max.bocca ha scritto:

Anch'io ho sempre fatto due for per annullare gli spazi, c'è anche un funzione che trovi in rete da caricare se non vuoi farla tu.

Gli si da in ingresso e in uscita della stringa da trimmerare.

Puoi gentilmente postare il link....?

 

Link al commento
Condividi su altri siti

34 minuti fa, drn5 ha scritto:

qui la funzione scritta in modo semplice semplice.

 

image.thumb.png.2220443f9b29b957e632181546453d79.png

Grazie mille  drn5, davvero gentilissimo stasera provo e ti aggiorno. Grazie ancora buona serata.

Link al commento
Condividi su altri siti

15 ore fa, drn5 ha scritto:

qui la funzione scritta in modo semplice semplice.

 

image.thumb.png.2220443f9b29b957e632181546453d79.png

Grazie mille  drn5, davvero gentilissimo stasera provo e ti aggiorno. Grazie ancora buona serata.

Grazie mille drn5 il codice funziona perfettamente,  sei stato proprio gentilissimo, grazie ancora  buona giornata 

Link al commento
Condividi su altri siti

20 ore fa, dina_supertramp ha scritto:

La prima operazione, che cancella il primo carattere della stringa (delete che punta al char 1), sarà all'interno di un IF che verifica che il carattere più a sinistra è uguale a spazio vuoto.

IF
    carattere a sinistra = vuoto
THEN
    cancella carattere all posizione 1
ELSE
;
END_IF;

 

La seconda operazione, che cancella l'ultimo carattere della stringa (delete che punta all'ultimo char), sarà all'interno di un IF che verifica che l'ultimo carattere è uguale a spazio vuoto.


LEGGI LUNGHEZZA STRINGA e restituisci il valore in una variabile INT "LunghezzaAttualeStringa"

 

IF
    carattere a destra = vuoto
THEN
    cancella carattere alla posizione "LunghezzaAttualeStringa"
ELSE
;
END_IF;

Al primo ciclo: entra nell'IF, che è verificato, cancella il carattere vuoto
Al secondo ciclo: entra nell'IF, che è verificato, cancella il carattere vuoto

Al n-ciclo: non entra nell'IF perché non è verificato, entra nell'ELSE, non fa nulla ( ; ).
Quindi, per rispondere alla tua domanda: cancella spazi vuoti all'inizio e alla fine finché ne trova 🙂

 

Ciao, ho provato anche a realizzare il codice con la tia soluzione,  però mi toglie un eventuale spazio finale o iniziale, ma se sono più di uno spazio, mi toglie sempre uno, forse sbaglio qualcosa........?

Link al commento
Condividi su altri siti

dina_supertramp
6 ore fa, Project75 ha scritto:

Ciao, ho provato anche a realizzare il codice con la tia soluzione,  però mi toglie un eventuale spazio finale o iniziale, ma se sono più di uno spazio, mi toglie sempre uno, forse sbaglio qualcosa........?

Ciao @Project75

 

Stamattina avevo un po' di tempo, ho preso il blocchetto che feci a suo tempo, sulla falsa riga delle indicazioni che ti ho dato nei messaggi precedenti,

e l'ho rivisto snellendolo un poco (ho racchiuso tutto in un solo FOR, non utilizzo più le istruzioni LEFT/RIGHT ma uso solo il FIND oltre che LEN e DELETE).

In merito alla tua prova: non ti faceva la ripetizione perché quello che ti ho scritto andava inserito in cicli FOR che non ho espressamente indicato.

Ti allego il blocchetto.

Funzionamento: Cerca un singolo carattere e lo elimina, per tutte le volte che viene trovato.


PS
Indentazione da migliorare....😁

 

image.thumb.png.0e9913ab82ed2ffe2e59ddbb7fbe2cc3.png

 

 

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

30 minuti fa, dina_supertramp ha scritto:

Ciao @Project75

 

Stamattina avevo un po' di tempo, ho preso il blocchetto che feci a suo tempo, sulla falsa riga delle indicazioni che ti ho dato nei messaggi precedenti,

e l'ho rivisto snellendolo un poco (ho racchiuso tutto in un solo FOR, non utilizzo più le istruzioni LEFT/RIGHT ma uso solo il FIND oltre che LEN e DELETE).

In merito alla tua prova: non ti faceva la ripetizione perché quello che ti ho scritto andava inserito in cicli FOR che non ho espressamente indicato.

Ti allego il blocchetto.

Funzionamento: Cerca un singolo carattere e lo elimina, per tutte le volte che viene trovato.


PS
Indentazione da migliorare....😁

 

image.thumb.png.0e9913ab82ed2ffe2e59ddbb7fbe2cc3.png

 

 

Dina-supertramp, grazie mille per il tempo dedicatomi, una domanda, da quello che vedo la tua soluzione se non erro elimina tutti gli spazi della stringa non solo quelli eventualmente iniziali e finali........o sbaglio? 

Link al commento
Condividi su altri siti

dina_supertramp

image.thumb.png.0e9913ab82ed2ffe2e59ddbb7fbe2cc3.png

 

Alla riga 4 togli l'AND con InChar....non serve a nulla...l

6 minuti fa, Project75 ha scritto:

Dina-supertramp, grazie mille per il tempo dedicatomi, una domanda, da quello che vedo la tua soluzione se non erro elimina tutti gli spazi della stringa non solo quelli eventualmente iniziali e finali........o sbaglio? 

Confermo, elimina tutti quelli che trova

Per eliminare solo quelli all'inizio e alla fine non vedo via diversa o comunque simile a quella indicata da @drn5

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

6 minuti fa, dina_supertramp ha scritto:

image.thumb.png.0e9913ab82ed2ffe2e59ddbb7fbe2cc3.png

 

Alla riga 4 togli l'AND con InChar....non serve a nulla...l

Confermo, elimina tutti quelli che trova

Diciamo che a me interessa togliere eventuali spazi all'inizio ed alla fine della stringa,  in ogni caso proverò l'istruzione potrebbe tornare sempre utile. Grazie mille ancora, gentilissimo. Buona giornata 

Link al commento
Condividi su altri siti

dina_supertramp
6 minuti fa, Project75 ha scritto:

Diciamo che a me interessa togliere eventuali spazi all'inizio ed alla fine della stringa,  in ogni caso proverò l'istruzione potrebbe tornare sempre utile. Grazie mille ancora, gentilissimo. Buona giornata 

Di nulla, scusa se mi sono staccato dal tuo obbiettivo iniziale...alla prossima ;)

Link al commento
Condividi su altri siti

7 minuti fa, dina_supertramp ha scritto:

Di nulla, scusa se mi sono staccato dal tuo obbiettivo iniziale...alla prossima ;)

Di nulla non c'è problema..... grazie ancora...

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...