2016-04-03 30 views
0

UDP ile çalışıyorum ve şu anda bir sensörden gönderilen bilgileri yakalarım. Sıcaklık, Işık ve Hareket olan bilginin gönderilmesinden sadece sayıları çıkarmaya çalışıyorum ve bunu Regex ile elde etmeye çalışıyorum. Ancak, "Ek bilgi: Girdi dizesi doğru biçimde değil" şeklinde bir FormatException alıyorum.Regex.Match, FormatException'ı atar

UdpClient udpClient = new UdpClient(1337); 
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0); 

while (true) 
{ 
    for (int i = 0; i < 5000; i++) 
    { 
     Byte[] receive = udpClient.Receive(ref endPoint); 
     string receiveDat = Encoding.ASCII.GetString(receive); 
     string result = Regex.Match(receiveDat, @"\D+").Value; 

     Console.WriteLine(Int32.Parse(result)); 
     Console.ReadLine(); 
    } 
} 
+0

'Regex.Match' bu özel durumu atmaz. Bu istisnayı atar Int32.Parse. '\ d',' \ D' basamak basamağını taşırken rakamlar alır. bu yüzden '\ D +' yerine '\ d +' ye geçin. –

+0

@ M.kazemAkhgary, neden yorumlarda cevaplar gönderiyorsunuz? Görüyorum ki bu cevabı bile gönderdiniz ve sildiniz. Yorumların amacının kısa cevaplar vermek değil, doğrudan bir cevap vermeyen noktaları tartışmak olduğunu düşünüyorum. Onu farklı görüyor musun? – BlueMonkMN

+0

@BlueMonkMN true. ama sorunun bir kısmına cevap veriyorum. döngülere bakarsanız tamamen yanlış olduğunu ve anlam ifade etmediğini görürsünüz. –

cevap

0

Sen yerine olmayan basamak basamak istiyorsanız normal ifadede bir küçük harf \d kullanmak gerekir: Burada kodudur. Sermaye \D yalnızca rakam olmayan karakterlerle eşleşir.

İlgili konular