Acabo de enfrentar este problema hoy y me pregunto si alguien tiene alguna idea sobre por qué esta prueba puede fallar (dependiendo de la cultura). El objetivo es comprobar si el texto de prueba contiene dos espacios uno al lado del otro, lo que hace de acuerdo con string.IndexOf
(incluso si le digo a la cadena que reemplace todas las ocurrencias de dos espacios uno al lado del otro). Después de algunas pruebas, parece que \xAD
está causando este problema.cadena IndexOf y reemplazar
public class ReplaceIndexOfSymmetryTest
{
[Test]
public void IndexOfShouldNotFindReplacedString()
{
string testText = "\x61\x20\xAD\x20\x62";
const string TWO_SPACES = " ";
const string ONE_SPACE = " ";
string result = testText.Replace(TWO_SPACES, ONE_SPACE);
Assert.IsTrue(result.IndexOf(TWO_SPACES) < 0);
}
}
no estoy seguro de si esto va a ser su problema, pero si usted tiene 3 espacios al lado del otro en esta prueba, entonces usted va a terminar con 2 uno al lado del otro al final de la misma. –
La prueba tiene éxito para mí. ¿Estás seguro de que el código que publicaste es el mismo que el código que estabas probando? –
El problema es que 'IndexOf' utiliza una búsqueda específica de la cultura, mientras que 'Reemplazar' utiliza una búsqueda ordinal. @Chris: el punto es que debería fallar. –