none
Cortar texto RRS feed

  • Pregunta

  • Hola necesito cortar un texto por espacios y mostrarlo en un mensaje con salto de lineas, pero que cada linea no supere una x cantidad de caracteres. No se si me explique bien.

    por ejemplo un texto que diga: "Ejemplo de como cortar una linea a tantos caracteres"

    y que me lo convierta a lineas de 10 caracteres como maximo:

    Ejemplo de

    como cortar

    una linea

    a tanto

    caracteres

    Muchas gracias


    • Editado Ale Kuhn martes, 11 de julio de 2017 13:37
    martes, 11 de julio de 2017 11:57

Respuestas

  • Ya encontre la solucion es la siguiente

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim T As String = TextBox1.Text
            Dim TT As String = ""
            Dim I As Integer = 0
            Dim F As Integer
            Dim L As Integer = InputBox("Inicio")
            If Len(T) < L Then Exit Sub
    
            Do While Len(T) - I > L
                If Not Len(TT) = 0 Then TT = TT & vbCrLf
                F = InStrRev(T, " ", I + L)
                TT = TT & Mid(T, I + 1, F - I)
                I = F
            Loop
    
            TT = TT & vbCrLf & Mid(T, I, Len(T) - I + 1)
    
            MsgBox(Trim(TT))
        End Sub

    el resultado es el siguiente:

    Gracias a todos por su ayuda. Seguro que ustedes lo hacen mejor jejeje pero bueno me funciono!!!

    • Marcado como respuesta Ale Kuhn miércoles, 12 de julio de 2017 15:02
    • Desmarcado como respuesta Joyce_ACModerator jueves, 13 de julio de 2017 14:41
    • Marcado como respuesta Joyce_ACModerator jueves, 13 de julio de 2017 14:41
    miércoles, 12 de julio de 2017 15:02

Todas las respuestas

  • Da un ejemplo de como quieres que salga... o tu avance ...
    martes, 11 de julio de 2017 13:32
  • Hola necesito cortar un texto por espacios y mostrarlo en un mensaje con salto de lineas, pero que cada linea no supere una x cantidad de caracteres. No se si me explique bien.

    por ejemplo un texto que diga: "Ejemplo de como cortar una linea a tantos caracteres"

    y que me lo convierta a lineas de 10 caracteres como maximo:

    Ejemplo de

    como cortar

    una linea

    a tanto

    caracteres

    martes, 11 de julio de 2017 13:49
  • Ok pero tienes algun avance? 
    martes, 11 de julio de 2017 13:53
  • no. aun no se como hacerlo
    martes, 11 de julio de 2017 14:00
  • https://msdn.microsoft.com/es-es/library/aa903372(v=vs.71).aspx

    http://www.grupo-spes.com.mx/funciones-de-manipulacion-de-cadenas/

    Intenta hacer algo te servira en el futuro.

    Tienes que obtener " " y extraer en eso en nuevos string y  las posiciones les das ++ en un ciclo for


    martes, 11 de julio de 2017 14:23
  • Hola:

     Podrías explicar cual es el criterio para hacer el split?, en .Net existe el método Split dentro de la clase String con el cual puedes dividir una cadena pasandole un char como parámetro para dividir la cadena. Ejemplo:

    using System;
    
    public class Example
    {
       public static void Main()
       {
          String value = "This is a short string.";
          Char delimiter = 's';
          String[] substrings = value.Split(delimiter);
          foreach (var substring in substrings)
             Console.WriteLine(substring);
       }
    }
    // The example displays the following output:
    //     Thi
    //      i
    //      a
    //     hort
    //     tring.
     Ahora, lo que tu comentas es que ¿quieres separar por espacio o por longitud? osea, si encuentra primero un espacio haga el split pero si no existe un espacio entonces tome 10 caracteres?, esa parte es la que no logro entender del todo, si me regalas una mejor explicación podría ofrecerte una respuesta mas acertada.


    Saludos desde Monterrey, Nuevo León, México!!!


    martes, 11 de julio de 2017 15:33
  • no. aun no se como hacerlo

    ¿Tienes alguna estrategia para resolver el ejercicio?

    Antes de escribir código debes de formular una solución, luego resta lo simple: transcribir la misma al lenguaje que ocupas. 

    Por ejemplo, imagina partir la cadena desde un inicio en diez caracteres, de esa primer subcadena tomas únicamente las palabras (obvias caracteres sobrantes), la siguiente lectura iniciará posterior a la última palabra que hayas considerado para la línea.

    "Ejemplo de como cortar una línea a tantos caracteres" '10 caracteres
    'Primer línea
    "Ejemplo de"
    
    "Ejemplo de como cortar una línea a tantos caracteres" '10 caracteres
    'Segunda línea
    "como"
    
    "Ejemplo de como cortar una línea a tantos caracteres" '10 caracteres
    'Tercera línea
    "cortar una"

    - Código

    Dim Cadena = "Ejemplo de como cortar una línea a tantos caracteres"
    Dim NuevaCadena = String.Empty
    
    Dim LongitudLinea = 10 'Cantidad máxima de carácteres por línea
    LongitudLinea += 1
    
    Dim Inicio = 0, Longitud = 0
    
    While NuevaCadena.Replace(Environment.NewLine, Space(1)).Length < Cadena.Length
    	LongitudLinea = If(Inicio + LongitudLinea <= Cadena.Length,
    		LongitudLinea, Cadena.Length - Inicio)
    	Longitud = Cadena.Substring(Inicio, LongitudLinea).LastIndexOf(" "c)
    	NuevaCadena += Cadena.Substring(Inicio,
    		If(Longitud = -1, LongitudLinea, Longitud)) & Environment.NewLine
    
    	Inicio += Longitud + 1
    End While
    
    MessageBox.Show(NuevaCadena)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    martes, 11 de julio de 2017 15:39
  •     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim cad = TextBox1.Text 'en esta textbox ingreso la cadena
            Dim car As String = Space(1)
            Dim x As String = "", mensaje As String = ""
            Dim pos As Integer = 0, i As Integer = 0, valor As Integer = 0
            Dim msj1 As String = "", msj2 As String = "" 'MENSAJES
            For index As Integer = 0 To 100
                valor = valor + 1
    
                pos = InStr(cad, car)
                If pos > 0 Then
                    If (valor Mod 2) = 1 Then
                        x = Microsoft.VisualBasic.Left(cad, pos) 'VALOR 
                        cad = Mid(cad, pos + 1) 'CADENA DIMINUENDO 
                        msj1 = x 'OBTENER EJEMPLO ...
                    Else
                        x = Microsoft.VisualBasic.Left(cad, pos) 'VALOR
                        cad = Mid(cad, pos + 1) 'CADENA DIMINUENDO  
                        msj2 = x 'OBTENER DE ...
                        mensaje = mensaje & msj1 & " " & msj2 & vbLf 'OBTENER EJEMPLO DE ...
                    End If
    
                Else
                    If (valor Mod 2) = 1 Then
                        x = cad
                        mensaje = mensaje & x
                        Exit For
                    Else
                        x = msj1 + cad
                        mensaje = mensaje & x
                        Exit For
                    End If
                End If
            Next
            'Mensaje
            MessageBox.Show("MENSAJE " & vbLf & mensaje & vbLf & " TERMINO LA CADENA", "RESULTADO", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1)
        End Sub

    Si que me tomo logica se caia constantemente pero ya  esta :3 almenos investigaste eso vale .  Slds


    martes, 11 de julio de 2017 16:46
  • Ya encontre la solucion es la siguiente

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim T As String = TextBox1.Text
            Dim TT As String = ""
            Dim I As Integer = 0
            Dim F As Integer
            Dim L As Integer = InputBox("Inicio")
            If Len(T) < L Then Exit Sub
    
            Do While Len(T) - I > L
                If Not Len(TT) = 0 Then TT = TT & vbCrLf
                F = InStrRev(T, " ", I + L)
                TT = TT & Mid(T, I + 1, F - I)
                I = F
            Loop
    
            TT = TT & vbCrLf & Mid(T, I, Len(T) - I + 1)
    
            MsgBox(Trim(TT))
        End Sub

    el resultado es el siguiente:

    Gracias a todos por su ayuda. Seguro que ustedes lo hacen mejor jejeje pero bueno me funciono!!!

    • Marcado como respuesta Ale Kuhn miércoles, 12 de julio de 2017 15:02
    • Desmarcado como respuesta Joyce_ACModerator jueves, 13 de julio de 2017 14:41
    • Marcado como respuesta Joyce_ACModerator jueves, 13 de julio de 2017 14:41
    miércoles, 12 de julio de 2017 15:02