Visual Basic - Encontrar un caracter especial en un texto

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Jose Miguel

Encontrar un caracter especial en un texto

Publicado por Jose Miguel (4 intervenciones) el 19/09/2020 01:33:06
Hola, estoy realizando un proyecto con mi visual basic. Necesito una ayudita :3

Planteamiento del problema...

Yo ingreso un texto en un texbox
un texto no, un párrafo.
que contenga preguntas
y que sea de tipo (pregunta-respuesta)
y que el programa cuando yo le presione un botón
me diga las preguntas por una parte
y las respuestas por otra parte
tengo una idea buenísima de como se podrá separar esas dos cosas.

Te comento: necesito un código que me detecto cuando empieza el signo "¿" y cuando termine en "?" entonces que me copio ese texto que contenga esos dos signos incluyendo esos mismos signos claro :D
y para la respuesta, que me identifique donde está el signo "?" y que después de ese signo me guarde el texto hasta un "."

Mi pregunta es... ¿cómo se puede realizar en el visual basic? por hay me dijeron que con la función split, pero no sé cómo puedo hacerlo. Me ayudan por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Encontrar un caracter especial en un texto

Publicado por Andres Leonardo (1798 intervenciones) el 19/09/2020 22:37:22
Con instr buscas el caracter ...
hasta donde lo veo es sencillo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Encontrar un caracter especial en un texto

Publicado por raul (160 intervenciones) el 21/09/2020 15:20:05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Type SOLVERCAD
 PREG As String
 RESP As String
End Type
 
Private Function BUSCAR(CADENA As String) As SOLVERCAD
Dim STAR As Integer, FINISH As Integer, TOTAL As Integer
STAR = InStr(CADENA, "¿"): FINISH = InStr(CADENA, "?")
TOTAL = (FINISH - STAR) + 1
BUSCAR.PREG = Mid(CADENA, STAR, TOTAL)
BUSCAR.RESP = Right(CADENA, Len(CADENA) - FINISH)
End Function
 
 
Private Sub Command1_Click()
MsgBox BUSCAR(Text1.Text).PREG
MsgBox BUSCAR(Text1.Text).RESP
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Encontrar un caracter especial en un texto

Publicado por Andres Leonardo (1798 intervenciones) el 21/09/2020 17:47:26
excelente codigo el tema es que esto tiene varias preguntas y respuestas en un solo parrafo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Encontrar un caracter especial en un texto

Publicado por Jose miguel (4 intervenciones) el 21/09/2020 17:52:29
Tienes toda la razon amigo, ¿que le podria modificar al codigo de arriba para que reconociera todas las preguntas y respuestas que se encuentren en cual quier parrafo que yo le inserte mediante un textbox?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Encontrar un caracter especial en un texto

Publicado por raul (160 intervenciones) el 21/09/2020 20:47:22
Disculpen que mal interprete la idea inicial

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Dim RNC As Recordset
Private Function BUSCAR(CADENA As String, VSTAR As Byte) As Byte
Dim STAR As Integer, FINISH As Integer, LASTCAD As Integer
    STAR = InStr(VSTAR, CADENA, "¿")
    FINISH = InStr(VSTAR, CADENA, "?")
    LASTCAD = InStr(VSTAR + 1, CADENA, "¿")
    RNC.AddNew
    If LASTCAD <> 0 Then
        RNC!pregunta = Mid(CADENA, STAR, (FINISH - STAR) + 1)
        RNC!respuesta = Trim(Mid(CADENA, FINISH + 1, (LASTCAD - FINISH)) - 1)
        BUSCAR = LASTCAD
    Else
        RNC!pregunta = Mid(CADENA, STAR, (FINISH - STAR) + 1)
        RNC!respuesta = Trim(Mid(CADENA, FINISH + 1, (Len(CADENA) - FINISH)))
        BUSCAR = Len(CADENA)
    End If
    RNC.Update
End Function
 
 
 Private Sub Command1_Click()
    Dim TOTAL As Integer, POS As Byte
    Me.Enabled = False
    If Len(Text1.Text) <> 0 Then
        TOTAL = Len(Text1.Text): POS = 1
        Do While POS < TOTAL
            POS = BUSCAR(Text1.Text, POS)
        Loop
        'Agregar el codigo para visualizar el recordset ejem DBGRID
    End If
    Me.Enabled = True
End Sub
 
Private Sub Form_Load()
    Set RNC = New Recordset
    RNC.Fields.Append "Pregunta", adBSTR
    RNC.Fields.Append "Respuesta", adBSTR
    RNC.Open
End Sub
 
 
//Ahora se emplea un Recordset desconectado para almacenar las preguntas y las respuestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Encontrar un caracter especial en un texto

Publicado por Jose miguel (4 intervenciones) el 22/09/2020 19:13:14
Muy bien, me puedes comentar como llegastes a esa conclusión? y si se puede almacenar varias respuestas y varias preguntas a la vez con un mismo parrafo extenso, espero tu respuesta. Muchas gracias de nuevo. :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Encontrar un caracter especial en un texto

Publicado por raul (160 intervenciones) el 22/09/2020 22:20:11
Jose, la primera vez no entendi la idea, luego cuando revice los comentarios entonces lo entendí mejor... Veras el codigo lo hice a la primera. Aun necesita perfeccionarse... Puede almacenar varias preguntas y respuestas de un parrafo, pero el codigo no es reutilizable o sea si por ejemplo evaluas un parrafo y luego otro; las preguntas y respuestas del segundo parrafo se almecenan a continuación de los datos del primero.

Escogi el mecanismo de RECORDSET desconectado para almacenar la información por comodidad, ya que las variables dimencionadas me fallan por problemas con las DLLs; pero igual no necesitabas almacenar la información pues podrias visualizar la información directamente en otro objeto como un listview.

En cuanto al mecanismo para determinar la distancia de las cadena de preguntas y respuestas es simple. Segun tú, es obligatorio el empleo de los comodines ¿? ose que (¿ marca el principio de las preguntas y ? marca el final) por ende necesitas 3 variables

STAR = principio de pregunta
Finish = Final de Pregunta
LASTCAD = principio de la proxima pregunta

ahora (Finish-STAR) marca la cantidad de caracteres que representa una pregunta.
y (LASTCAD-FINISH) marca la cantidad de caracteres que representa la respuesta.

La estructura IF-THEN-ELSE está diseñada para evitar un error ya que al final del parrafo se advierte que que solo habra un solo caracter comodin ¿ o sea que LASTCAD =0 y como no se pueden tomar 0 caracteres de una cadena hay que restaurar un valor...

Mejoras a realizar

En la SUB COMMAND_CLICK demajo de me.enabled = false escribes

1
2
3
if RNC.state <> 0 then
     RNC.CLOSE
end if

el tema de visualizar el contenido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Encontrar un caracter especial en un texto

Publicado por jose miguel (4 intervenciones) el 22/09/2020 22:23:37
Perfecto, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Encontrar un caracter especial en un texto

Publicado por Andres Leonardo (1798 intervenciones) el 22/09/2020 19:09:11
siempre uimportante pongan ejemplos asi tenemos el concepto claro desde el inicio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar