Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

107
Vistas
C # resultado incorrecto de la expresión de rango de índice

Estoy un poco confundido con el operador de rango de índice: esperaba que la expresión myString[..0] fuera equivalente a myString[0..0] , luego myString.Substring(0, 1) o myString[0].ToString() , y en el caso del código siguiente:

 string myString = " abc"; string resultString = myString[..0];

el valor de resultString debe ser un solo espacio " " . Desafortunadamente, obtuve String.Empty :(

¿Alguien sabe por qué y me puede explicar, por qué estoy equivocado?

Los documentos de Microsoft no describen casos similares (o no puedo encontrarlos).

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

el valor de resultString debe ser un solo espacio " "

No, no debería.

El final de un rango es exclusivo , no inclusivo . Entonces, por ejemplo, x[0..x.Length] siempre devolverá la cadena completa.

En su caso, está diciendo "todo antes del índice 0", que obviamente es "la cadena vacía".

Esto está documentado en (aparte de otros lugares) la documentación de Range.End :

Obtiene un índice que representa el índice final exclusivo del rango.

over 4 years ago · Santiago Trujillo Denunciar

0

El .. es una sintaxis para System.Range y el formulario que está utilizando

 string resultString = myString[..0];

se traduce en,

 string resultString = myString[Range.EndAt(new Index(0, fromEnd: true))]

En su caso, está intentando ..0 , lo que significa que todos los elementos que están antes del índice 0 y esa es la razón por la que obtiene el resultado como string.Empty

Documentación de MSDN para la propiedad Index.End

Obtiene un índice que apunta más allá del último elemento .

over 4 years ago · Santiago Trujillo Denunciar

0

Podría ser más fácil considerar los índices en un rango como si estuvieran entre los caracteres , no apuntando a un carácter .

ingrese la descripción de la imagen aquí

Si los caracteres de la cadena se rociaron en los paneles de la cerca, los índices en un rango se refieren a los postes de la cerca, no a los paneles de la cerca.

ingrese la descripción de la imagen aquí

Cuando corta una cadena con rangos, obtiene todos los caracteres entre los índices. Cuando arranca los postes de la cerca de X a Y, los paneles de la cerca entre los postes se caen: obtiene los caracteres en los paneles caídos

 var hw = "Hello world"; hw[0..11] //Hello world hw[..5] //Hello hw[0..0] //(empty string - there are no characters between index 0 and index 0)

La razón por la que recomiendo pensar en índices en un rango entre caracteres es que hace que usar el ^n "desde la derecha" sea fácil de razonar. Tomando [^7..^2] tomará estos paneles:

ingrese la descripción de la imagen aquí

o wor que te pongas a trabajar

Si pensara en los índices como apuntando a caracteres o paneles , entonces debe recordar a) "el final del rango es exclusivo" y luego también b) que hay un carácter imaginario agregado al final de la cadena que es ^0 , solo para que pueda excluirlo nuevamente. O tienes que pensar "los índices ^x son de la derecha, y si los usas le da la vuelta a la exclusiva", y luego tienes que pensar en alguna forma de recordar o averiguar cuál es el extremo exclusivo si volver a mezclar índices non-^ con índices ^ .

En general, es más consistente recordar "los índices están entre los caracteres" y "^ es de la derecha", luego puede mezclar y combinar lo que quiera:

ingrese la descripción de la imagen aquí

 hw[^5..^1] //worl hw[^5..10] //worl hw[6..10] //worl hw[6..^1] //worl
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda