2012-09-25 28 views
5

Aşağıdaki gibi bir dize değerinin belirli bir bölümünü bulmam gerekiyor, "Toplantı Kimliği" ni belirli bir numaraya değiştirmem gerekiyor.Dize Bul ve Değiştir Yöntem

Bu numara birden çok sayının açılır listesinden geliyor, bu yüzden kullanamazsınız & değiştirin. Metin, kullanıcı mutlu olmadan önce birden fazla sayıya geçebilir.

"0783," dizesinin bir kısmı hiçbir zaman değişmez ve "Toplantı Kimliği" her zaman bir "," ile devam eder.

Yani ben "0783, INSERT METİN" olsun ve ardından Dizin Değişti olaya yeni bir numara eklemek gerekir. M Problemi, 518-06-xxx, 999 0783 9999, Toplantı Kimliği, xxx ??, başlangıç ​​zamanı

İş Davet -: Burada

bir örnektir

Bu dizeyi bulmanın ve her seferinde sınamanın değiştirilmesinin en iyi yolu nedir?

Umarım bu mantıklı olur mu?

cevap

3

Tamam, bunu yapmanın birkaç yolu var, ancak bu sizin kontrolünüzün üzerinde çalıştığınız bir dizi gibi görünüyor, bu yüzden burada yapmak istediğiniz şeyi söyleyeceğim.

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

bunu o zaman biraz daha zeki olmak zorunda gidiyoruz üzerinde kontrol yoksa: in ardından "0783"

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

Bu doğru bir fikre benziyor, şansı yakaladığımda bunu deneyeceğim! Teşekkürler. – Derek

+0

@ Derek, teşekkürler! –

+0

Mükemmel çalışıyor, teşekkürler dostum. Bunu asla yenemezdim. – Derek

0

Sen Regex.Replace yöntemle deneyebilirsiniz

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

Sen saklamalısınız senin sen dize ihtiyacınız olduğunda "geçerli" senin kullanıcının eylemleri ile birlikte değişen bir değişkene Meeting ID, ve sonra aynı küresel değişken kullanın.

Bu şekilde, dize içinde ne olduğu konusunda endişelenmenize gerek yok ve dizi dizinleriyle karışıklığa gerek yok. Gelecekte bir noktada yüzünüzde havaya uçuracak sihirli numaralardan/dizelerden de güvende olacaksınız.

0

kullanım Regex.Split belirteci ile dizideki ikinci dize döndürme belirteci tarafından bölünmüş "," dize dizisindeki ilk öğe yeni metin ekleyebileceğiniz yer olabilir. Sonra "0783" ile ilk bölmeye katılmak için string.Join kullanın ve ikinci "," ile birleştirin.

 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); 
İlgili konular