2012-09-25 9 views
5

Necesito localizar una parte específica de un valor de cadena como el siguiente, necesito modificar la "Id. De reunión" a un número específico.Método de búsqueda y reemplazo de cadenas

Este número proviene de una lista desplegable de varios números, por lo que simplemente no puedo usar find & reemplazar. Como el texto podría cambiar a uno de varios números antes de que el usuario esté satisfecho.

La parte "0783" de la cadena nunca cambia, y "ID de reunión" siempre va seguida de un ",".

así que necesito para llegar a "0783, insertar texto," y luego insertar el nuevo número en el acontecimiento cambió Índice.

Aquí se muestra un ejemplo: -

Invitación de negocios, hora de inicio, M Problema, 518-06-xxx, 9999 999 0783, ID de la reunión, xxx ??

¿Cuál es la mejor manera de localizar esta cadena y la sustitución de la prueba cada vez?

Espero que esto tenga sentido chicos?

Respuesta

3

Bien, hay varias maneras de hacerlo, sin embargo, esto parece ser una cadena sobre la que tiene control, así que voy a decir que esto es lo que quiere hacer.

var myString = string.Format("Business Invitation, start time, M Problem, 518-06-xxx, 9999 999 0783, {0}, xxx ??", yourMeetingId); 

Si usted no tiene control sobre él, entonces vamos a tener que ser un poco más inteligente:

var startingIndex = myString.IndexOf("0783, "); 
var endingIndex = myString.IndexOf(",", startingIndex + 6); 
var pattern = myString.Substring(startingIndex + 6, endingIndex - (startingIndex + 6)); 
myString = myString.Replace(pattern, yourMeetingId); 
+0

Parece la idea correcta, ¡intentaré esto cuando tenga la oportunidad! Gracias. – Derek

+0

@Derek, ¡muchas gracias! –

+0

Funciona perfectamente, gracias amigo. Nunca hubiera peleado esto. – Derek

0

Usted puede tratar con Regex.Replace método

string pattern = @"\d{3},"; 
    Regex regex = new Regex(pattern); 

    var inputStr = "518-06-xxx, 9999 999 0783"; 
    var replace = "..." 
    var outputStr = regex.Replace(inputStr, replace); 
1

conveniente guardar su "actual" Meeting ID en una variable, cambiando junto con las acciones de su usuario, y luego usar esa misma variable global siempre que lo necesite la cadena.

De esta manera, no tiene que preocuparse por lo que hay dentro de la cadena y, no necesita meterse con los índices de matriz. También estará a salvo de los números mágicos/cadenas, que seguramente volarán en su cara en algún momento en el futuro.

0

uso Regex.Split por token "0783", a continuación, en el segunda cadena en la matriz devuelta dividida por token "," el primer elemento en la matriz de cadenas sería donde insertaría texto nuevo. Luego use string.Join para unir la primera división con "0783" y la unión del segundo con ",".

 string temp = "Business Invitation, start time, M Problem, 518-06-xxx, 9999 999 0783, Meeting ID, xxx ??"; 
     string newID = "1234"; 
     string[] firstSplits = Regex.Split(temp, "0783,"); 
     string[] secondSplits = Regex.Split(firstSplits[1], ","); 
     secondSplits[0] = newID; 
     string @join = string.Join(",", secondSplits); 
     firstSplits[1] = @join; 

     string newString = string.Join("0783,", firstSplits); 
Cuestiones relacionadas