2016-04-12 32 views
1

kez belirli bir miktar metni değiştirin, ben böyle bir şey gibi görünen bir çizgi var sadece fiyat 1 almaktır. price2 almak için bana izinRegex:</p> <p><code>test = "article;vendor;qty;desc;price1;price2"</code></p> <p>ve ne i çalışıyorum: noktalı virgül arasına i regex ile karıştı biraz olduğum

Regex.Replace(test, @".*;[^;]*;", "");

ama ben Fiyat1 izole nasıl göremiyorum: Şu anda bu işlevi kullanıyorum.

var input = "article;vendor;qty;desc;price1;price2"; 
var output = input.Split(';'); 

Ve sonra sadece kendi endeksine göre değerini erişebilir:

var result = output[4]; // yields "price1" 
+0

'var price2 = test.Split (';') [4];'? –

cevap

1

yapmak yerine bir diziye mevcut noktalı virgül ayrılmış dize kırmak için String.Split() çağrısı kullanarak düşünün mı

Tam olarak aradığınız şeyle eşleşmek ve seçim yapmak için kullanabileceğiniz belirli bir kalıp varsa, yalnızca Normal İfade kullanmak isteyeceksiniz, ancak ayrılmış listeler için, String.Split() yöntemi genellikle işleri daha kolay hale getirecektir (özellikle eğer ere, listeden çekmeye çalıştığınız öğeyi benzersiz bir şekilde tanımlayamaz.

+0

Tamamen haklısın, neden karmaşık şeyleri aradığımı merak ediyorum, teşekkürler. –

+0

Sorun değil. Düzenli İfadeler kesinlikle kullanımlarına sahiptir, ancak genellikle kapsamları dışında bir şeyler için aşırı şekilde kullanılabilecek bir "çekiç" haline gelebilirler. Bu yüzden * burada bir tane kullanabilirken, en iyi yaklaşım olmayabilir :) –

0

aşağıdaki regex:

(?:[^;]*;){4}([^;]*); 

Ve ilk maçı grubunu değiştirin.

İlgili konular