Autor
|
Tema: [RETO] uCaseCorrect. Corrector de Mayusculas! (Leído 17,743 veces)
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Este reto consiste en poner mayusculas a las letras que estan delante de un punto , punto y aparte , nueva linea , signo de exclamacion o signo de interrogacion (abiertos o cerrados). Estructura: uCaseCorrect(Txt as String) as String
La funcion debe corregir las mayusculas de la cadena poniendo mayusculas despues de los puntos y en cuanto a los ¡! y ¿? miren esto : http://goo.gl/z14ab FROG Creo que con eso lo habran entendido... GRACIAS POR LEER!!!
|
|
« Última modificación: 16 Febrero 2011, 16:44 pm por 79137913 »
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Que bonito! Me apunto! Igual quedaría más divertido metiendo más cosas, como por ejemplo despues de las comas... DoEvents!
|
|
« Última modificación: 16 Febrero 2011, 13:33 pm por Mr. Frog © »
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!!
Como despues de las comas? XD
Que yo sepa despues de las comas se escribe igual.
Ya se le agregamos los otros signos de puntuacion como ¿? y ¡! Que luego hay que escribir mayusculas.
GRACIAS POR LEER!!!
|
|
« Última modificación: 16 Febrero 2011, 13:42 pm por 79137913 »
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!!
Actualizado el RETO!
Agregadas variables booleanas para seleccionar si queres poner mayusculas despues de puntos, signos de interrogacion o exclamacion.
GRACIAS POR LEER!!!
|
|
« Última modificación: 16 Febrero 2011, 18:00 pm por 79137913 »
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Pero Frog, en el coso q pasaste es porq dice un Nombre xD, voy a ver si puedo hacer este reto aunquesea xD
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Al fin! Termine la funcion, estoy feliz con que sea funcional XD no se como me va a ir con la velocidad, seguro es lenta Private Function uCaseCorrect7913(Txt As String) As String Dim X As Long Dim Y As Long Dim Aux() As String Dim MED As Long Dim Ubi() As Long Dim Susp As Long Dim SIGNO(2) As String SIGNO(0) = ".": SIGNO(1) = "?": SIGNO(2) = "!" 'TOMADO DE XXX-ZERO-XXX Txt = "." & Txt & "a" ReDim Sus(Int(Len(Txt) / 3)) ReDim Ubi(Len(Txt) + 5) '".?¡" For X = 0 To 2 Do Y = Y + 1 Ubi(Y) = InStr(Ubi(Y - 1) + 1, Txt, SIGNO(X)) Loop While Ubi(Y) <> 0 Next 'COMPROBAR "..." Do Susp = InStr(Susp + 1, Txt, "...") If Susp <> 0 Then For X = 1 To Y If Ubi(X) = Susp + 2 Then Ubi(X) = 0 Next End If Loop While Susp <> 0 'PONER MAYUSCULAS A LA PUNTUACION ReDim Preserve Ubi(Y) For X = 1 To Y If Ubi(X) > 0 Then MED = Ubi(X) Do MED = MED + 1 Loop While Not (((Asc(Mid$(Txt, MED, 1)) > 64) And Asc(Mid$(Txt, MED, 1)) < 91) Or ((Asc(Mid$(Txt, MED, 1)) > 96) And Asc(Mid$(Txt, MED, 1)) < 123)) And Not (Mid$(Txt, MED, 1) = "," Or Mid$(Txt, MED, 1) = ";" Or Mid$(Txt, MED, 1) = ".") Mid$(Txt, MED, 1) = UCase$(Mid$(Txt, MED, 1)) End If Next 'vbNewLine--------vbNewLine Aux = Split(Txt, vbNewLine) For X = 0 To UBound(Aux) MED = 0 If X <> 0 Then If Right$(Aux(X - 1), 1) = "." Or Right$(Aux(X - 1), 1) = "?" Or Right$(Aux(X - 1), 1) = "!" Then Do MED = MED + 1 Loop While Not (((Asc(Mid$(Aux(X), MED, 1)) > 64) And Asc(Mid$(Aux(X), MED, 1)) < 91) Or ((Asc(Mid$(Aux(X), MED, 1)) > 96) And Asc(Mid$(Aux(X), MED, 1)) < 123)) Mid$(Aux(X), MED, 1) = UCase$(Mid$(Aux(X), MED, 1)) End If End If Next For X = 0 To UBound(Aux) uCaseCorrect7913 = uCaseCorrect7913 & Aux(X) & vbNewLine Next uCaseCorrect7913 = Mid$(uCaseCorrect7913, 2, Len(uCaseCorrect7913) - 4) End Function
GRACIAS POR LEER!!!
|
|
« Última modificación: 18 Febrero 2011, 14:42 pm por 79137913 »
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Bueno yo dejo la mia, como siempre 0 profesional xD pero bue.. talvez es la forma mas facil y eso es bueno no se.
EDITADOOO: Me dedico a otra cosa mejor mientras.. xD
|
|
« Última modificación: 16 Febrero 2011, 18:44 pm por XXX-ZERO-XXX »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
@79137913
Error:
Cadenas:
* "miguel, ¡cuanto me alegro de que hayas llamado!" ** Debe retornar: "Miguel, ¡cuánto me alegro de que hayas llamado!"
Dulces Lunas!¡.
|
|
« Última modificación: 16 Febrero 2011, 18:59 pm por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Me faltan mas cosas pero voy dejando aca, desp voy modificando este post: Option Explicit Function uCaseCorrect(txt As String) As String Dim sFrase As String, sText As String Dim pos As Long, i As Long, k As Long Dim signo(4) As String signo(0) = "¡": signo(2) = "." signo(1) = "¿": signo(3) = "!": signo(4) = "?" sText = UCase$(Left$(txt, 1)) sFrase = sText & Mid$(txt, 2) uCaseCorrect = sFrase For i = 0 To 4 If InStr(1, sFrase, signo(i)) <> 0 Then k = 1 Do pos = InStr(k, sFrase, signo(i)) While Mid$(sFrase, pos + 1, 1) = " " pos = pos + 1 Wend sText = UCase$(Mid$(sFrase, pos + 1, 1)) & Mid$(sFrase, pos + 2) sFrase = Left$(sFrase, pos) & sText k = k + 1 Loop While InStr(k, sFrase, signo(i)) <> 0 End If Next i uCaseCorrect = sFrase End Function Private Sub Form_Load() Debug.Print uCaseCorrect("¡hola! ¿como andas? espero que bien che!!! Que pases bien entonces. chau. bye!") End Sub
Salida: ¡Hola! ¿Como andas? Espero que bien che!!! Que pases bien entonces. Chau. Bye!
|
|
« Última modificación: 16 Febrero 2011, 19:49 pm por XXX-ZERO-XXX »
|
En línea
|
|
|
|
|
|