2011-03-15 14 views

Respuesta

26

puede utilizar

str = str.SubString (10); // to remove the first 10 characters. 
str = str.Remove (0, 10); // to remove the first 10 characters 
str = str.Replace ("NT-DOM-NV\\", ""); // to replace the specific text with blank 

// to delete anything before \ 

int i = str.IndexOf('\\'); 
if (i >= 0) str = str.SubString(i+1); 
+0

Creo que el punto es que esto funcione en varias cadenas diferentes, por lo que tiene dos cadenas y desea eliminar una de la otra. –

+0

@ Øyvind Knobloch-Bråthen, agregó más alternativas. –

+0

¡No pedí borrar los primeros 10 caracteres! – SamekaTV

3

Si siempre hay sólo una barra invertida, utilice esto:

string result = yourString.Split('\\').Skip(1).FirstOrDefault(); 

Si puede haber múltiples y sólo quiere tener la última parte, utilice la siguiente:

string result = yourString.SubString(yourString.LastIndexOf('\\') + 1); 
+0

+1 conciso y reutilizable – JohnK813

0
string s = @"NT-DOM-NV\MTA"; 
s = s.Substring(10,3); 
+1

-1: Nunca especificó, que cualquiera de las partes es de longitud fija. –

+0

@Daniel: para ser justos, no ha especificado mucho ... Es posible que tampoco haya una "\" –

+0

@paolo: tienes razón. Pero la suposición de que cualquiera de esas cadenas es de longitud fija tal vez habría sido correcta hace 30 años, pero no hoy en día. –

1

Trate

string string1 = @"NT-DOM-NV\MTA"; 
string string2 = @"NT-DOM-NV\"; 

string result = string1.Replace(string2, ""); 
+0

string result = string1.Replace (string2, string.Empty); – katta

4
string.TrimStart(what_to_cut); // Will remove the what_to_cut from the string as long as the string starts with it. 

"asdasdfghj".TrimStart("asd" ); dará lugar a "fghj".
"qwertyuiop".TrimStart("qwerty"); dará como resultado "uiop".


public static System.String CutStart(this System.String s, System.String what) 
{ 
    if (s.StartsWith(what)) 
     return s.Substring(what.Length); 
    else 
     return s; 
} 

"asdasdfghj".CutStart("asd" ); ahora resultará en "asdfghj".
"qwertyuiop".CutStart("qwerty"); resultará en "uiop".

+1

Problema con cable. Creo que muchos desarrolladores no lo saben. De todos modos, es una solución realmente buena y clara. Sustituyo TODO TrimStart en nuestra aplicación por su método CutStart. Gracias. – Jacob

9

Teniendo en cuenta que "\" siempre aparece en la cadena

var s = @"NT-DOM-NV\MTA"; 
var r = s.Substring(s.IndexOf(@"\") + 1); 
// r now contains "MTA" 
+0

esto es justo lo que necesitaba! Gracias. – SamekaTV

+0

¿Qué pasa si la cadena es '@" NT-DOM-NV \ MTA \ ABC \ file "' y después de dividir 'NT-DOM-NV', necesito la primera cadena después de la división. En este caso, debería ser 'MTA'. Si tengo que dividir 'NT-DOM-NV \ MTA', entonces debería devolver' ABC'. TIA – ASN

0

Usted puede utilizar este método de extensión:

public static String RemoveStart(this string s, string text) 
{ 
    return s.Substring(s.IndexOf(s) + text.Length, s.Length - text.Length); 
} 

En su caso, se puede usar de la siguiente manera:

string source = "NT-DOM-NV\MTA"; 
string result = source.RemoveStart("NT-DOM-NV\"); // result = "MTA" 

Nota: Do no use TrimStart método como yo t podría recortar uno o más caracteres más (see here).

0
Regex.Replace(@"NT-DOM-NV\MTA", @"(?:[^\\]+\\)?([^\\]+)", "$1") 

pruébalo here.

Cuestiones relacionadas