Me explican que esta sucediendo aquí!!

Iniciado por TrashAmbishion, 11 Abril 2021, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

TrashAmbishion

Hola,

frase[0] = "eyes";

frase[0].Replace(frase[0].Substring(0, 1), frase[0].Substring(0, 1).ToUpper());

Lo que pretendo es poner la primera letra en mayúsculas pero en cambio me saca EyEs...

Me explican porque.

Saludos

Serapis

Claro...

Observa, desgranando los parámetros

quien es reamplazado = frase[0].Substring(0, 1)
quien le sustituye = frase[0].Substring(0, 1).ToUpper()

frase[0].Replace(quien es remplazado, quien le sustituye)

Como quiera que el carácter a remplazar (0,1) es la 'e', y que se remplaza todas sus apariciones por 'E'... pués el resultado obtenido es correcto, pero no el deseado...

Prueba con:

frase[0] = "elefante valiente"

Verás que todas las 'e' acaban siendo mayúsculas. Con solo 2 'e' en una palabra tan corta, es posible que te cueste más verlo claro...

Si lo que buscas es poner (solo) la primera letra en mayúsculas, hay varios modos, he aquí uno de ellos:

string s = frase[0].substring(0,1).toUpper   // toma el primer caracter y lo comvierte a mayúsculas
frase[0] = s + frase[0].substring(1,frase[0].length-1)  // concatena detrás el resto de la cadena.

.


TrashAmbishion

Hola,

Gracias por la pronta respuesta.

Pero en teoría estoy especificando que lo que deseo modificar sera el primer carácter o no?

O substring hace una búsqueda de ese carácter en toda la cadena?

Saludos

Serapis

No.

Tu estás haciendo un Replace.
Tus 'substring' solo señalan que se será remplazado y por quien será remplazado...
Esto es, tus substrings, son los parámetros de la orden Remplazar.

Tu estás haciendo esto:


frase[0] = "eyes";

frase[0].Replace("e", "E");

TrashAmbishion

Ah el replace es el de la cuestión...

Es que asumí otra cosa con el, me hice la idea que se remplazaba ese carácter nada mas..

replace("a","d")

No asumí que buscaba todas las "a" en la cadena

Vale, muchas gracias, todo bien

Danielㅤ

Hola, pues si, el método Replace() reemplaza todas las coincidencias encontradas con el patrón dado.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

**Aincrad**

Yo lo haría así :

Código (vbnet) [Seleccionar]
Dim Frase As String = "eyes"
        Frase = Frase.Substring(0, 1).ToUpper + Frase.Remove(0, 1)
       


en C#:

Código (csharp) [Seleccionar]
string Frase = "eyes";
    Frase = Frase.Substring(0, 1).ToUpper() + Frase.Remove(0, 1);


y la salida es : "Eyes"




LastChance

#7
Suponiendo que solo tengas una palabra y quieras volver mayúscula la primera letra de esa palabra, es decir, lo que haces en el ejemplo que mostraste, entonces puedes simplificar el código haciendo uso de la función: CultureInfo.InvariantCulture.TextInfo.ToTitleCase()

Código (csharp) [Seleccionar]
string str = "eyes";
str = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(str);


Si por lo contrario lo que pretendes es volver mayúscula la primera letra de la primera palabra en conjunto de palabras o frase, pues ya te han dado soluciones. Aunque yo lo haría de la siguiente manera:

Código (csharp) [Seleccionar]
string str = "eyes";
str = $"{char.ToUpper(str.First())}{str.Remove(0, 1)}";


O de esta otra forma si además necesitas volver minúscula los demás caracteres de la palabra:

Código (csharp) [Seleccionar]
string str = "eyes";
str = $"{char.ToUpper(str.First())}{str.Remove(0, 1).ToLower()}";


Saludos.
sdfsdf