2011-09-23 23 views
11

Tengo una cadena similar a SMITH 09-15 # 4-01H6 FINAL 07-02-2011.dwg y tengo que actualizar todo hasta la palabra FINAL, incluido el espacio anterior el resultado de F. F. sería SMITH 09-15 # 4-01H6 ¿Cómo puedo obtener esto? string.substring? ¿Regex? muchas graciasBuscar subcadena en una cadena usando C#

+0

Debe proporcionar más de un ejemplo para que podamos ver el patrón. – Jason

+0

Una función de subcadena solo le ayudará si la longitud de la cadena deseada es una constante (o, trabajando desde el final de la cadena, si la longitud que desea truncar es constante, lo que parece más probable en su caso). –

+1

¡GUAU, 7 respuestas en aproximadamente 2 minutos! – VoodooChild

Respuesta

22

IndexOf ("FINAL") obtendrá el índice de FINAL. Luego, obtenga la subcadena de 0 a ese índice.

Actualización: No olvide la opción StringComparison correcta.

+3

Estoy buscando un nombre que contenga "FINAL" para probar que esto fallará ... aún no tengo suerte, pero LastIndexOf se debe usar en lugar de IndexOf. – daniloquio

+0

Harás que finalio llore: http://torrentz.eu/users/finalio jeje no encontró un nombre que contenga el final. – daniloquio

+0

Es una búsqueda sensible a mayúsculas y minúsculas, por lo que solo si escribe su nombre con mayúscula. Pero punto tomado .LastIndexOf() –

3

una expresión regular es probablemente más de matar, un simple String.Substring como:

string original = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"; 
int pos = original.IndexOf("FINAL"); 
string new = original.Substring(0, pos); 
3

Prueba esto:

string data = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"; 
string result = data.Substring(0, data.IndexOf("FINAL")); 
2

Esto debería bastar para usted:

string str = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg" 
string substring = str.Substring(0, str.IndexOf("FINAL")) 

En el código arriba, el inicio de subcadena es el índice 0 y luego tiene una longitud de la ubicación de "FINAL" (iniciar char)

6

Usando String.Substring() método

String a = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg" 
String b = a.Substring(0, a.IndexOf("FINAL")); 

yo no recomendaría el uso de expresiones regulares en este caso, ya que es más pesado que el código.

4

En el siguiente ejemplo, cuttedOne será igual a "SMITH 09-15 # 4-01H6".

string yourString = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"; 
string cuttedOne = yourString.Substring(0, yourString.LastIndexOf("FINAL")); 

Debe utilizar LastIndexOf en lugar de IndexOf; de lo contrario, si la entrada es "CARFINALTH 09-15 # 4-01H6 FINAL 07-02-2011.dwg" obtendrá como resultado "CAR".

1

Solo para esta cadena puede encontrar el índice de F y usar String.Substring(0,indexofF).

código como este

private static int ReturnIndexOfAGivenCharacterInAString(string str, string s) 
{ 
    int index = str.IndexOf(s); 
    return index; 
} 

private static string ReturnSubStringOfAGivenStringByLength(string str, string s) 
{ 
    int indexOfS = ReturnIndexOfAGivenCharacterInAString(str,s); 
    string subString = str.Substring(0,indexOfS); 
    return subString;  
} 
private static string ReturnSubStringOfMyString() 
{ 
    string myString = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"; 
    //As I pointed earlier you can use F for this string because there is no other F in it 
    //no need for checking FINAL 
    string subStringOfMyString = ReturnSubStringOfAGivenStringByLength(myString,"F"); 
} 

ya se puede llamar ReturnSubStringOfMyString() para conseguir lo que desea, y también se puede llamar ReturnSubStringOfAGivenStringByLength(string,string): puede utilizarse para cualquier String como ReturnSubStringOfAGivenStringByLength("SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg","F").

Cuestiones relacionadas