Necesito un programa que se filtre y muestre solo letras mayúsculas de una cadena. Tengo una cadena de ejemplo:

c5hDF (5HА_Z * u1BP

Se supone que debo obtener:

DFHAZBP

Intenté esto:

string a = Console.ReadLine(); 

No pude usar 'a' en una declaración IF porque hay un error que dice

Error CS0200 La propiedad o el indexador 'string.this [int]' no se pueden asignar, es de solo lectura

Traté de hacerlo mucho porque no puedo pensar en otra forma. Básicamente le dije al programa que revisara cada parte de la cadena si es una letra mayúscula como esta:

for (i = 0; i < a.Length; i++)
{
    if (a[i] = "Q")
    {
        b = b + a[i];
    }   
}

Estaba pensando en hacerlo para cada letra pero no funciona. También probé:

string v = a;

Y luego escriba v en todos los 'si' pero tampoco funcionó.

c#
0
TheDemonCrusher 28 abr. 2020 a las 12:36

3 respuestas

La mejor respuesta

Error tipográfico simple:

if (a[i] = "Q")

Debe ser

if (a[i] == "Q")

Para una comparación, no una tarea.

2
AKX 28 abr. 2020 a las 09:37

Simplemente puede usar IsUpper () para su salida deseada. He intentado el código según sus requisitos. Por favor, consulte el siguiente código.

        static void Main(string[] args)
        {
            string text = "IsHanKsHaH";
            char[] charArray = text.ToCharArray();
            foreach(var ch in charArray)
            {
                if(Char.IsUpper(ch))
                {
                    Console.Write(ch);
                }
            }
            Console.ReadLine();
        }

El resultado será IHKHH

0
Ishan Shah 28 abr. 2020 a las 09:57

Como AKX dijo que solo tienes un error tipográfico simple.

Sin embargo, parece que tiene la intención de verificar cada carácter de cadena con A, B, C, etc., lo cual es muy engorroso y realmente no es necesario. El marco ya tiene char.IsUpper para verificar si Un personaje es una letra mayúscula.

Además, en lugar de un bucle, podría usar LINQ para simplificar su código:

var b = new string(a.Where(char.IsUpper).ToArray());

Para a = "c5hDF(5HА_Z*u1BP" esto produce b = "DFHАZBP".

Esto toma su cadena a y la convierte a través de LINQ en una secuencia de caracteres, luego los filtra si están en mayúsculas, convirtiendo la secuencia filtrada en una matriz, que luego puede usarse usando un constructor de cadenas para convertirlo en una cadena.

1
ckuri 28 abr. 2020 a las 09:52