Red de conocimiento informático - Problemas con los teléfonos móviles - operaciones de cadena vb

operaciones de cadena vb

Algunas operaciones comunes con cadenas

Pregunta:

Supongamos que copio algunos datos de una tabla de Excel al portapapeles, como esta información:

Allen 12

Anderson 13

Douglas 12

Ohio 49

¿Cómo puedo combinar estos nombres con ¿Qué pasa con la lectura de números en ¿una matriz o un cuadro de cuadrícula? Usar Clipboard.GetText(vbCFText) solo puede leer todos los datos a la vez, pero quiero leerlos uno por uno.

Respuesta:

Crea un nuevo proyecto y coloca dos etiquetas y un comando en el formulario.

El siguiente es el código:

Private Sub Command1_Click()

Dim vTekst$

vTekst$ = "Allen 12 "

vTekst $ = vTekst$ & "Anderson 13 "

vTekst$ = vTekst$ & "Bernard 14 "

vTekst$ = vTekst$ & "Constance 15 "

Label1. Caption = vTekst$

Seleccionar caso Command1.Caption

Caso "Copiar portapapeles"

Clipboard.Clear

Clipboard.SetText Label1. Caption

Command1.Caption = "Poner en etiqueta"

Caso "Poner en etiqueta"

Label2.Caption = GetPartofString(Clipboard.GetText, 1 )

Command1.Caption = "Copiar portapapeles"

'leer en matriz

Dim vText(7) As String

Dim c %

Para c% = 0 a 7

vText(c%) = GetPartofString(Clipboard.GetText, c% + 1)

Siguiente c%

'mostrar resultado

Para c% = 0 a 7

MsgBox vText(c%)

Siguiente c%

End Sub

Función privada GetPartofString(source$, part%) Como cadena

Dim p%, c%, tmp$

tmp$ = fuente$

c% = 0

Do

p% = InStr(tmp, Chr(32))

Si p% <> 0 Entonces

GetPartofString = Izquierda(tmp, p% - 1)

c% = c% + 1

tmp = Derecha(tmp, Len (tmp ) - p%)

Finalizar si

Bucle while c% <> part%

Función final

--1 -------------------------------------------------- -- ---------

Pregunta:

¿Cómo puedo contar el número de letras en una cadena? Por ejemplo: quiero contar el número de letras en Texto1.Texto cuando el usuario presiona Aceptar.

Respuesta:

¿Qué tal si utilizamos el comando LEN(Text1.text)? Puede obtener la longitud... incluidos espacios y otros caracteres que no sean letras.

Entonces, si desea eliminarlos, debe tener una pequeña función para verificar si los caracteres en Text1.Text son letras reales:

Public Function CountCharacters(source$) As Integer

Dim counter%, t%

Const Characters$ = "abcdefghijklmnopqrstuvwxyz"

For t% = 1 To Len(source$)

Si InStr(Characters, LCase$(Mid$(fuente$, t%, 1))) <> 0 Entonces

contador% = contador% + 1

Finalizar si

Siguiente t%

CountCharacters = contador%

Función final

Se usa así:

vString$ = "Probando... ¿sobre qué?"

MsgBox CountCharacters(vString$)

--2--------------------- -- --------------------------------------

Pregunta:

¿Alguien sabe cómo hacer un bucle tan especial? Necesito poner cada letra en una cadena, decir "Hola, ¿cómo estás?", en una variable diferente. Por ejemplo, en la oración anterior, H se coloca en A1, e se coloca en A2, y así sucesivamente. Gracias por su ayuda.

Respuesta:

Atenuar vChar() como cadena

Sub PlaceInArray(fuente$)

Atenuar p%

Para p% = 1 To Len(fuente$)

Redim Preserve vChar(p%)

vChar(p%) = Mid$(fuente$,p%,1 )

Next p%

End Sub

En cada elemento de la matriz vChar, se dan todas las letras de la cadena.

--3---------------------------------------- --------------------------

Pregunta:

¿Cómo se leen las palabras en una ¿Archivo de texto uno por uno? Cada palabra del archivo está separada por espacios.

Respuesta:

Atenuar vWords() como cadena

Sub SplitStringintoWords(bron$)

Atenuar c%, p%, t %, vCheck%

Dim TempBron$, tmp$

'Dividir una línea de entrada en palabras

t% = 0

TempBron$ = bron$

Para c% = 1 a Len(bron$)

p% = InStr(TempBron$, Chr(32))

Si p % <> 0 Entonces

ReDim Preserve vWords(t%)

tmp = Left$(TempBron$, p% - 1)

vWords( t% ) = StripString(tmp)

TempBron$ = Derecha$(TempBron$, Len(TempBron$) - p)

t% = t% + 1

c% = c% + p%

Finalizar si

Siguiente c%

ReDim Preserve vWords(t%)

vWords (t%) = StripString(TempBron)

End Sub

Primero debes leer una línea de texto y luego usar el proceso anterior. En la matriz vWords están todas las palabras del archivo de texto. Si también necesitas ayuda para leer el archivo, házmelo saber.

--4---------------------------------------- ---------------------

Pregunta:

Necesito reemplazar uno de todos los cuadros de texto en el formulario Words , ¿qué se debe hacer? Déjame decirte gracias primero.

Respuesta:

Pruebe esto...

'Coloque un comando y tres cuadros de texto en el nuevo formulario y luego agregue el siguiente código

'Presione F5 para ejecutar, asegúrese de cambiar el título del comando a "&Reemplazar a alguien conmigo"

Private Sub Command1_Click()

Const vString$ = "probando para alguien en la red"

Seleccionar caso Command1.Caption

Caso "&Reemplazar texto en todos los cuadros de texto"

Texto1.Text = vString

Text2 .Text = vString

Text3.Text = vString

Command1.Caption = "&Reemplazar a alguien conmigo"

Caso "&Reemplazar a alguien conmigo"

Llamar a ChangeText

Command1.Caption = "&Reemplazar texto en todos los cuadros de texto"

Finalizar selección

Finalizar sub

Función sReplace(SearchLine como cadena, SearchFor como cadena, Reemplazar con como cadena)

Dim vSearchLine como cadena, encontrado como entero

encontrado = InStr(SearchLine, SearchFor): vSearchLine = SearchLine

p>

Si se encuentra <> 0 Entonces

vSearchLine = ""

Si se encuentra > 1 Entonces vSearchLine = Left(SearchLine, encontrado - 1)

vSearchLine = vSearchLine + Reemplazar con

Si se encuentra + Len(SearchFor) - 1 < Len(SearchLine) Entonces _

vSearchLine = vSearchLine + Right$(SearchLine, _

Len(SearchLine) - encontrado - Len(SearchFor) + 1)

End If

sReplace = vSearchLine

Fin de función

Private Sub ChangeText()

Control atenuado

Para cada control en Form1.Controls

Si el control TypeOf es TextBox, entonces

Control.Text = sReplace(Control.Text, "alguien", "yo")

Es

d If

Siguiente control

End Sub

--5-------------------- ----------------------------------------

Haz una pregunta :

Ahora tengo un cuadro de texto para ingresar una cadena. También hay una matriz de control de 60 cuadros de texto, que contienen uno de mis diccionarios. Logré verificar cada palabra en la cadena para ver si coincide con una palabra en la matriz del control, también conocida como diccionario. Tuve que eliminar toda la puntuación antes de la inspección. Si toda la frase está escrita correctamente, envío un mensaje, si está mal escrita, envío otro mensaje.

Gracias a todos por sus sugerencias e ideas sobre esto.

Respuesta:

Supongamos que tiene un cuadro de texto para ingresar palabras y luego las compara con una matriz... Podría usar el siguiente código como punto de partida... pero, por favor. Considere convertir su diccionario en una base de datos, porque las bases de datos funcionan mucho más rápido cuando se convierte en un diccionario real.

'en la sección general

Dim vWords()

Dim Max%

Dim vCheckWord()

Private Form1_Load()

Text1.SetFocus

Text1.Text = "viviendo en Estados Unidos pero no realmente"

Max% = 10

'crear matriz

'puedes usar un archivo ascii para obtener las palabras

Redim vCheckWord(Max)

vCheckWord(0) = "walther"

vCheckWord(1) = "musch"

vCheckWord(2) = "américa"

vCheckWord(3) = "tilburg"

vCheckWord(4) = "hola"

vCheckWord(5) = "probar"

vCheckWord(6) = "probar"

vCheckWord(7 ) = "realmente"

vCheckWord(8) = "visual"

vCheckWord(9) = "básico"

End Sub

Sub SplitStringintoWords(bron$)

Atenuar c%, p%, t%, vCheck%

Atenuar TempBron$, tmp$

Atenuar vOke como booleano

dividiendo la entrada en palabras

t% = 0

TempBron$ = bron$

For c% = 1 To Len (bron$)

p% = InStr(TempBron$, Chr(32))

Si p% <> 0 Entonces

ReDim Preserve vWords(t %)

tmp = Izquierda$(TempBron$, p% - 1)

vWords(t%) = StripString(tmp)

TempBron$ = Derecha $(TempBron$, Len(TempBron$) - p)

t% = t% + 1

c% = c% + p%

Fin Si

Siguiente c%

ReDim Preserve vWords(t%)

vWords(t%) = StripString(TempBron)

' comprobar con el corrector ortográfico

vOke = False

Para c% = 0 To t%

Para vCheck% = 0 To Max

Si vCheckWord(vCheck%) <> vWords(c%) Luego

vOke = False

Else

vOke = True

vCheck% = Max%

Finalizar si

Siguiente vCheck%

Si no es vOke, entonces MsgBox vWords(c%)

vOke = False

Siguiente c%

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

Si KeyAscii = 13 Entonces

'divide la cadena en palabras

Llama a SplitStringintoWords(Text1.Text )

Finalizar si

End Sub

Función StripString(fuente como cadena) Como cadena

Const Letters$ = "abcdefghijklmnopqrstuvwxyz"

Dim p%, tmp$

tmp = fuente$

For p% = 1 To Len(fuente$)

Si InStr (Letras, LCase(Mid$(source$, p%, 1))) = 0 Entonces

Seleccione Caso p%

Caso 1

tmp = Derecha$(fuente$, Len(fuente$) - p%)

Caso Len(fuente$)

tmp = Izquierda$(fuente$, Len(fuente$) - 1 )

Caso más

tmp = Izquierda$(fuente$, p%) & Derecha$(fuente$, Len(fuente$) - p%)

Finalizar selección

Finalizar si

Siguiente p%

StripString = tmp

Finalizar función

-- 6------------------------------------------------- --------------- ------------

Pregunta:

Necesito ayuda para determinar si un nombre de archivo tiene un sufijo y luego elimine el sufijo. Originalmente quería obtener el nombre del archivo y luego guardarlo como un archivo de respaldo con otro sufijo. ¿Existe alguna manera conveniente sin buscar "\" en toda la cadena de ruta?

Respuesta:

Busque el primer "\" desde la parte posterior de la cadena de ruta hacia adelante, use el comando Right$, para que pueda obtener el nombre del archivo.

Si quieres eliminar el sufijo haz lo mismo, solo busca el primer "."

Tenga en cuenta que en W95, el nombre del archivo puede incluir más de un "."

Puede usar código como este:

Dim p%

Función GetFileName( PathString$ ) Como cadena

GetFileName = PathString

For p% = Len(PathString) To 0 Paso -1

Si Mid$(PathString,p% ,1 ) = "\" entonces

GetFileName = Right$(PathString,p%)

Salir de la función

Finalizar si

Siguiente p %

Función final