如果最後的X數字總是數字,則:
int x = 5;
string s = "IAmAString-00001";
int num = int.Parse(s.Substring(s.Length - x, x));
Console.WriteLine("Your Number is: {0}", num);
如果最後一個數字可能是3,4或5的長度,那麼你將需要多一點的邏輯:
int x = 0;
string s = "IAmAString-00001";
foreach (char c in s.Reverse())//Use Reverse() so you start with digits only.
{
if(char.IsDigit(c) == false)
break;//If we start hitting non-digit characters, then exit the loop.
++x;
}
int num = int.Parse(s.Substring(s.Length - x, x));
Console.WriteLine("Your Number is: {0}", num);
我不擅長複雜的正則表達式。正因爲如此,當最大限度的優化是不必要的時候,我總是迴避它。這是因爲RegEx並不總是按照您期望的方式來解析字符串。如果有另一種解決方案仍然運行得很快,那麼我寧願選擇這條路線,因爲我更容易理解並知道它可以與任何字符串組合起作用。例如:如果您使用某些其他解決方案,如「I AmAString-000001」,則您將得到「2000001」作爲您的數字而不是「1」。
您可以使用字典將字符串與相應的數字索引進行映射。 – 2011-05-19 13:06:53