2012-09-25 21 views
5

Potrzebuję zlokalizować określoną część wartości ciągu, jak poniżej, muszę zmienić "identyfikator spotkania" na określony numer.Metoda Znajdź i zamień ciągu znaków

Ta liczba pochodzi z listy rozwijanej wielu numerów, więc nie mogę po prostu użyć Znajdź & Zamień. Ponieważ tekst może zmienić się na jedną z wielu liczb, zanim użytkownik będzie zadowolony.

Część łańcucha "0783" nigdy się nie zmienia, a po "identyfikatorze spotkania" zawsze następuje ",".

więc muszę dostać się do „0783, wstawić tekst”, a następnie wstawić nowy numer na zmienionym wydarzeniu.

Oto przykład: -

biznesowe zaproszenie, czas rozpoczęcia, M Problem, 518-06-xxx, 9999 999 0783, Meeting ID, xxx ??

Jaki jest najlepszy sposób na zlokalizowanie tego ciągu i zastąpienie testu za każdym razem?

Mam nadzieję, że to ma sens?

Odpowiedz

3

OK, jest kilka sposobów na zrobienie tego, ale wydaje się, że to jest ciąg, nad którym masz kontrolę, więc powiem ci, co chcesz zrobić.

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

Jeśli nie mają kontroli nad nim wtedy będziemy musieli być nieco bardziej sprytny:

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

To wygląda na właściwy pomysł, spróbuję tego, gdy dostanę szansę! Dzięki. – Derek

+0

@Derek, wielkie dzięki! –

+0

To działa idealnie, dzięki kumpel. Nigdy bym tego nie pokonał. – Derek

0

Można spróbować z Regex.Replace metody

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

Należy przechowywać swoje „prąd” Meeting ID w zmiennej, zmieniając go wraz z działaniami swojego użytkownika, a następnie użyć tej samej zmiennej globalnej, gdy trzeba ciąg.

W ten sposób nie musisz się martwić o to, co jest w środku ciągu i, nie ma potrzeby wprowadzania zmian w indeksach tablicowych. Będziesz także chroniony przed magicznymi liczbami/strunami, które w pewnym momencie w przyszłości zostaną wysadzone w twarz.

0

użycie Regex.Split przez żeton „0783”, a następnie w drugi łańcuch w tablicy zwraca podzielony przez token "," pierwszy element tablicy łańcuchów byłby tam, gdzie wstawiałbyś nowy tekst. Następnie użyj ciągu.Join, aby dołączyć do pierwszego podziału z "0783", a dołączyć drugi z ",".

 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); 
Powiązane problemy