2010-04-07 16 views
5

¿Cómo podemos dividir la subcadena de la cadena¿Cómo podemos extraer subcadena de la cadena por la posición y el separador

Como tengo cadena

String mainString="///Trade Time///Trade Number///Amount Rs.///"; 

Ahora tengo otra cadena

String subString="Amount" 

Luego quiero extraer la subcadena Amount Rs. con la ayuda de una segunda cadena llamada subString no por ningún otro método, pero sí Se extraerá a través de dos parámetros, como el primero es el número de índice de la cadena Cantidad y el segundo es hasta la siguiente cadena ///.

Respuesta

18

En primer lugar obtener el índice de la subcadena:

int startIndex = mainString.IndexOf(subString); 

a continuación, obtener el índice de las siguientes barras:

int endIndex = mainString.IndexOf("///", startIndex); 

entonces se puede obtener la subcadena que desea:

string amountString = mainString.Substring(startIndex, endIndex - startIndex); 
+0

@ Guffa, genial ... señor ... gracias por la ayuda ... Funciona ... – Harikrishna

1

Esto debería resolver su problema creo:

mainString.substring(mainString.IndexOf("Amount Rs. "), "///") 

donde mainString.IndexOf("Amount Rs. ") es el Inicio Índice & "///" es el Índice de Fin .

+0

@ Ravia, lo siento, pero esto da el error ... gracias por la ayuda. – Harikrishna

1
string str = Regex.Match("///(?<String>[^/]*?" + subString + "[^/]*?)///").Groups["String"].Value; 

Debe usar String.Format pero el uso exacto de {x} en una cadena @ ganar una expresión regular que no recuerdo (se necesitan para doblar la {}?)

NB: Esto supone que no esperaba ninguna /, por lo que podría ser mejorado un poco

+2

Has puesto un @ antes de la primera cadena literal, por lo que buscaría '\/\/\ /' en lugar de que '///'. Además, '\ /' no es una secuencia de escape válida. Debería usar el método 'Regex.Escape' en el valor' subString' que coloca en la expresión regular para que sea seguro para cualquier valor. – Guffa

0

Como complemento a la respuesta de @ Guffa, puede realizar un método de extensión fuera de él:

Nota: No hay validación para asegurar que los índices proporcionados están en los límites de la cadena.

public static class StringExtensions 
{ 

    public static string SubstringBetweenIndexes(string value, int startIndex, int endIndex) 
    { 
     return value.Substring(startIndex, endIndex - startIndex); 
    } 

} 
Cuestiones relacionadas