2011-09-22 18 views
17

Digamos que tengo dos cadenas:diferencia entre dos cadenas de C#

string s1 = "hello"; 
string s2 = "hello world"; 

¿Hay alguna manera de obtener una string s3 = " world"; que es la diferencia entre las 2 cadenas?

EDIT:

La diferencia será siempre en este escenario

s1 = "abc" 
s2 = "abcd ads as " 
+0

's3 = s2.Replace (s1, "");'? – Cipi

+9

Debería definir más claramente la diferencia. ¿Qué pasa con el escenario de 's1 =" hello! "' Y 's2 =" hello world! "'? O 's1 =" bob the builder "' y 's2 =" the bob "'? ¿Siempre contiene una subcadena exacta de la otra cadena? – mellamokb

+1

¿qué pasa con las diferencias más complicadas ... digamos, "abc" vs "1bC4" –

Respuesta

25

Uso string s3 = s2.Replace(s1, "");

EDIT: Tenga en cuenta que todas las apariciones de s1 en s2 estarán ausentes de s3 . Asegúrese de considerar cuidadosamente los comentarios en esta publicación para confirmar que este es su resultado deseado, por ejemplo, los escenarios mencionados en el comentario @mellamokb.

+2

Solo recuerde que si s1 aparece más de una vez en s2, podría haber un problema. Si s2 = "hola hola", esto devolvería solo un espacio ya que "hola" se empareja varias veces. –

+0

@JB King: de acuerdo, creo que se necesita más información del OP sobre qué significa exactamente "diferencia". +1 al comentario de mellamokb –

5
string s1 = "hello"; 
string s2 = "hello world"; 
string s3 = s2.replace(s1,""); 
+0

Usted es el segundo más alto en responder esto, traté de poner mi respuesta, pero ya hay 2 respuestas –

2

SI (gran "si") s1 siempre es una subcadena de s2, entonces se podría trabajar con .IndexOf y .Length para encontrar en qué s2 que es s1.

4

Con un simple reemplazar

string s3 = s2.Replace(s1, ""); 
5

Si el caso se define es correcta una solución alternativa sería:

string s3 = s2.substring(s1.Length); 

Esto es suponiendo que la segunda cadena comienza con exactamente los mismos caracteres que el primera cadena y simplemente desea cortar la duplicación inicial.

1

Primera respuesta sin condiciones fuera del código:

string s3 = null; 
if (s2.StartsWith(s1)) 
{ 
    s3 = s2.Substring(s1.Length); 
}