Det beror lite på. Är det alltid tresiffriga ID-nummer? Finns det andra sekvenser i subpage.Url som kan ha lika många siffror som ID-numret?
Det enklaste är:
using System.Text.RegularExpressions;
...
Regex re = new Regex(@"\d{3}");
Int32 id = Int32.Parse(re.Matches(subpage.Url)[0].Value);
...
Det förutsätter dock att inga andra talserier om tre tecken kan förekomma i strängen och att id-numret alltid är tre siffor långt.
Annars kan man ju arbeta runt det;
using System.Text.RegularExpressions;
...
Regex re = new Regex(@"/\d{1,6}/");
string result = re.Matches(subpage.Url)[0].Value;
Int32 id = Int32.Parse(result.Substring(1, result.Length - 2));
...
Nu plockar den bara ut nummer ur strängen som omgärdas av / - och är mellan 1 och 6 tecken långa.
Det kan också vara bra att se till så att det verkligen fanns träffar, genom att kolla att re.Matches(subpage.Url).Count > 0.
using System.Text.RegularExpressions;
...
Regex re = new Regex(@"/tabid/(\d*)/");
Int32 result = Int32.Parse(re.Match(subpage.Url).Groups(1).Value);
...
Isåfall funkar inte det övre exemplet (som du säger) men det andra kör jag på nu och det funkar.
Om man kunde plocka ut allt mellan /tabid/ och /Default.aspx så skulle det vara idiotsäkert, eller hur?
Jag tycker att du markerar fel svar. Mitt sista exempel;
using System.Text.RegularExpressions;
...
Regex re = new Regex(@"/tabid/(\d*)/");
Int32 result = Int32.Parse(re.Match(subpage.Url).Groups(1).Value);
...
...är det bättre av dem. Då kan id-numret innehålla hur många tecken som helst och den går enbart efter adresser med tabid som föräldra-mapp.
Oj, sorry, såg inte det inlägget igår. Givetvis är det det rätta svaret.
En sak bara... var ska using System.Text.RegularExpressions; ligga? Var jag än lägger det så får jag ett felmeddelande, tar jag bort det funkar allt som det ska.
Jag tycker att du markerar fel svar. Mitt sista exempel;
using System.Text.RegularExpressions;
...
Regex re = new Regex(@"/tabid/(\d*)/");
Int32 result = Int32.Parse(re.Match(subpage.Url).Groups(1).Value);
...
...är det bättre av dem. Då kan id-numret innehålla hur många tecken som helst och den går enbart efter adresser med tabid som föräldra-mapp.
Då får jag:
Non-invocable member 'System.Text.RegularExpressions.Match.Groups' cannot be used like a method
using System.Text.RegularExpressions bör ligga vid alla andra namnrymds-referenser. Det kan vara så att det inte behövs i VS.NET, men jag sitter på Mono - och där är man illa tvungen att importera den namnrymden.
Likaså verkar det fungera lite olika med Group/GroupCollection-klasserna. Om du byter parenteserna mot hakparenteser - fungerar det bättre då?
Int32 id = Int32.Parse(re.Match(subpage.Url).Groups[1].Value);
Hmm, jag måste kombinera det med någon typ av regexp, eftersom ibland är det en-US som ska bytas mot något, men när någon är på t.ex. Kinesiska så ska ju zh-CN bytas mot t.ex. sv-SE.
Så jag måste plocka ut /language/en-US/Default.aspx, ersätta det som regexp har returnerat och ersätta det.