Regex

2016-04-13 22 views
-4
string temp = "12345&refere?X=Assess9677125?Folder_id=35478"; 

yalnız numarayı 12345 ayıklamak gerekir bir dize içinde belirli sayıda ayıklamak ve Rakamları 9677125 ve 35478.Regex

Ne regex kullanabilirsiniz gerekmez? Eğer cenneti bu oldukça basit bize verdiği kadarıyla

+5

İhtiyaç duyduğunuz numara her zaman başlangıçta mı ve bir & amp; – Steve

+1

Dizenin deseni nedir? –

cevap

0

: te gibidir:

^(\d+) 

ve fesih durumunda

sonra (örneğin 999 için) bazı sayıdır Ve işareti ( &) bir regex gerekmez. Sadece işareti üzerine dize bölmek ve elde edilen dizinin ilk elemanı almak: Alternatif

String temp = "12345&refere?X=Assess9677125?Folder_id=35478"; 
var splitArray = String.Split('&', temp); 
var number = splitArray[0]; // returns 12345 

, o ana kadar işareti dizinini ve substring alabilirsiniz:

String temp = "12345&refere?X=Assess9677125?Folder_id=35478"; 
var ampersandIndex = temp.IndexOf("&"); 
var number = temp.SubString(0, ampersandIndex); // returns 12345 
0

:

var regex = new Regex(@"^(?<number>\d+)&"); 
var match = regex.Match("12345&refere?X=Assess9677125?Folder_id=35478"); 
if (match.Success) 
{ 
    var number = int.Parse(match.Groups["number"].Value); 
} 

Düzenleme: Tabii Eğer Giorgi verdiği kombinasyonlardan herhangi biriyle new Regex ait argüman yerini alabilir.

: sonlandırma desen hep & değil

^(\d+)& 

ise: uzunluk keyfi ise

^(\d{5})& 

: Burada

2

dizesinin başında 5 haneli bir sayı çıkarmak için düzenli ifade olan
^(\d+)[^\d] 

Sayse 'in yorumuna göre basitçe yeniden yazabilirsiniz İstediğiniz numara dizesinin başında her zaman ve bir tarafından sonlandırıldı ise

^(\d+)999 
+3

Sonlandırma neden önemlidir? İhtiyacınız olan tek şey, dizenin başlangıcındaki bir rakamla eşleşmektir. – Sayse

+0

@Sayse, evet aptalca bir şey yaptım, ancak sonlandırma aynı zamanda rakam ya da sayı olsun, yardımcı olacaktır. –

+1

@Sayse, düzenlemeleri gör. Durum, 8 rakamına kadar dizenin başlangıcındaki tüm basamaklar olabilir. Eğer sonlandırma '&' ise, elbette bu saçmalıktır ve sadece '(\ d +) 'kullanabiliriz. –

1

Sen don Yalnızca ilk numarayı ayıklamak istiyorsanız regex'e gereksinim duyarsınız:

string temp = "12345&refere?X=Assess9677125?Folder_id=35478"; 

int first = Int32.Parse(String.Join("", temp.TakeWhile(c => Char.IsDigit(c)))); 

Console.WriteLine(first); // 12345