Número de posición de un caracter en string

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • malaga01
    Member
    • feb
    • 93

    #1

    Número de posición de un caracter en string

    Hola:

    Una duda básica pero que no acabo de encontrar respuesta.

    En un campo string, tengo numeros separados por '-', necesito saber como puedo calcular la posición que tiene '-' para tomar sólo los primeros caracters que son lo numéricos.

    ¿Hay algún comando o función que te diga el número de posición de un caracter en un string? No he encontrado nada en la ayuda ni usando el buscador.

    Gracias por vuestr ayuda.

    Saludos
  • LouieBoy
    Member
    • ago
    • 86

    #2
    Buenas,

    ¿Te has mirado la ayuda para el comando FIND?

    Saludos,

    LouieBoy

    Comentario

    • ballan
      Senior Member
      • oct
      • 671

      #3
      Quiza te interese mas hacer lo siguiente:

      data: cadena(8) values '01-02-03',
      numero1(2)
      numero2(2)
      numero3(2).

      split cadena at '-' into numero1 numero2 numero3.

      en numero1 te almacenaria 01
      en numero2 te almacenaria 02
      en numero3 te almacenaria 03

      Comentario

      • malaga01
        Member
        • feb
        • 93

        #4
        Hola LouieBoy:

        He bsucado el comando FIND, pero no existe en la versión 4.6C no existe ¿Sabes si hay alguno similar? El comando SEARCH no hace lo mismo.

        Gracias por tu respuesta.

        Saludos

        Comentario

        • LouieBoy
          Member
          • ago
          • 86

          #5
          hmmm, vaya putada, si la solucion que te ha dado el compi no te sirve, siempre puedes hacer una rutina rollo:

          strlen de la string

          WHILE longitud de la string <= contador_general.
          add 1 to contador
          add 1 to contador_general
          if string(1)+contador = '-'.
          contador contendra la cantidad de caracteres hasta -
          clear contador.
          endif.
          ENDWHILE.

          Es lo primero que se me ocurre. respecto al search creo, que no te deja hacer for all ocurrences, lo que significa que a la que encuentre el primer guion, acabara.

          Saludos,

          LouieBoy

          Comentario

          • malaga01
            Member
            • feb
            • 93

            #6
            Muchas Gracias Loui, Ballan

            Lo haré por código como me habeis comentado, ya que no existe el comando.

            Buen fin de semana.

            Saludos

            Comentario

            • Floren
              Senior Member
              • abr
              • 209

              #7
              Hola compañero de Málaga,

              Con la sentencia SEARCH lo puedes hacer, te cuento:

              search cadena for '-'.

              En sy-postd te vendrá el desplazamiento del caracter '-' dentro de la cadena.
              En este caso, si cadena valiese 'hola-amigo':
              sy-subrc valdría 0 por haber encontrado el caracter '-'.
              sy-postd valdría 4, por ser el desplazamiento.

              Espero haberte ayudado. Por cierto, en Málaga ... estarás en coritel no?

              Un saludo
              Florentín Navarrete Moya
              SAP HCM Consultant
              Mail: administracion@blogdefloren.com
              Blog: www.blogdefloren.com

              Comentario

              • LouieBoy
                Member
                • ago
                • 86

                #8
                Floren, no es nada personal, pero vamos a ser un poco malos... que pasa si tienes esto hola-amigo-quetal? y utilizas el search con '-' ?

                Saludos,

                LouieBoy

                Comentario

                • Floren
                  Senior Member
                  • abr
                  • 209

                  #9
                  Hola LouieBoy,

                  La pregunta de malaga01 era:
                  '¿Hay algún comando o función que te diga el número de posición de un caracter en un string?'. Y con mi post anterior quedaría resuelta.

                  Si quieres obtener todas las posiciones, es cuestión de añadir algo de código. Por ejemplo:

                  REPORT ztest_floren.

                  PARAMETERS: cadena(40) TYPE c.

                  DATA: aux(40) TYPE c,
                  cont TYPE i,
                  len type i.

                  CLEAR: aux, cont, len.
                  aux = cadena.

                  DO.
                  SEARCH aux FOR '-'.
                  IF sy-subrc EQ 0.
                  len = strlen( aux ).
                  IF len EQ 1.
                  WRITE: len, /.
                  exit.
                  ELSE.
                  cont = 1 + cont + sy-fdpos.
                  WRITE: cont, /.
                  aux = cadena+cont.
                  ENDIF.
                  ELSE.
                  EXIT.
                  ENDIF.
                  ENDDO.

                  Este report te escribirá en pantalla todas las apariciones del caracter '-' en el string que introduzcas por pantalla.

                  Si hay algo que no entiendes, postéalo.

                  Un saludo
                  Florentín Navarrete Moya
                  SAP HCM Consultant
                  Mail: administracion@blogdefloren.com
                  Blog: www.blogdefloren.com

                  Comentario

                  • malaga01
                    Member
                    • feb
                    • 93

                    #10
                    Gracias por las aclaraciones, está todo más que claro con lo que me habéis comentado.

                    Por cierto Floren, estuve, pero ya no estoy allí.

                    Saludos

                    Comentario

                    • LouieBoy
                      Member
                      • ago
                      • 86

                      #11
                      Buenas, Floren, quizás tienes razón a lo que la pregunta respecta, aunque yo siempre intento ir un poco mas allá. Buen rollete

                      Saludos,

                      LouieBoy

                      Comentario

                      Trabajando...