Eliminar no numericos
HOla he hecho un algoritmo k elimina todos los caracteres no numericos de una cadena y mi jefe de dice k lo cambie k tiene k existir algo mas directo o mas sencillo , si alguien lo conoce agradeceria la ayuda.
Saludos. |
podriamos ver tu codigo de tu funcion y ver si no esta optimizada o no?.
Pero podrias especificar mas lo que quieres y ver si es posible mas sencillo o no. Saludos!!! |
tengo una cadena y quiero dejar solo los caracteres numericos eliminando tb los 0's de la izquierda , el campo es it_fichero-cantxpza y todas las variables son enteros.
shift it_fichero-cantxpza left deleting leading '0'. clear: cont , elim , cont_1 , y , i , elim_aux , cont_aux. i = strlen( it_fichero-cantxpza ). DO i times. IF ( it_fichero-cantxpza+cont(1) CN '0123456789' ). **Si es la primera letra se elimina directamente sino DUMP IF ( cont = 0 ) . it_fichero-cantxpza+cont(1) = ''. ELSE. elim_aux = elim + 1. y = cont - elim. cont_aux = y + 1. it_fichero-cantxpza+elim_aux(y) = it_fichero-cantxpza+elim(y) . it_fichero-cantxpza+elim(1) = ''. elim = elim + 1. ENDIF. ENDIF. cont = cont + 1. ENDDO. |
Mira asi seria mas facil
DATA: i TYPE i, tam TYPE i. anyval = string. CLEAR i. tam = strlen( anyval ). tam = tam - 1. DO tam TIMES. IF ( anyval+i(1) < '0' OR anyval+i(1) > '9' ). CLEAR anyval+i(1). ENDIF. ADD 1 TO i. ENDDO. Condese anyval no-gaps. Con esto limpias todos los que no son numeros saludos |
Creo que no hay, y si le colocas asi:
DATA: cadena LIKE it_fichero-cantxpza. clear: i, cadena, cont. i = strlen( it_fichero-cantxpza ). DO i times. IF ( it_fichero-cantxpza+cont(1) CA '0123456789' ). "Ojo es CA CONCATENATE cadena it_fichero-cantxpza+cont(1) INTO cadena. ENDIF. cont = cont + 1. ENDDO. * Eliminando los ceros a la izquierda para evitar el DUMP CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = cadena IMPORTING OUTPUT = cadena. * Al final solo igualamos it_fichero-cantxpza = cadena. Espero te sirva ... |
Sip como me complico a ver si esto le convence.
Saludos y Gracias |
Se me ocurre esto.... seguramente hay algo mejor.
DATA : texto TYPE string . DATA : texto_aux TYPE string . DATA : i TYPE i. DATA : offset TYPE i. texto = 'HJS001l2k493400'. i = STRLEN( texto ). DO i TIMES. offset = sy-index - 1. CHECK texto+offset(1) CO '123456789' OR ( texto+offset(1) EQ '0' AND STRLEN( texto_aux ) >= 1 ). CONCATENATE texto_aux texto+offset(1) INTO texto_aux. ENDDO. Saludos. Javier |
Husos Horarios son GMT. La hora en este momento es 03:24:16. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web