我從具有長類型限定符的第三方SW得到一個字符串,例如, 「1L」。 我想解析這到一個Int64,但Int64.TryParse不認識到這是一個Int64。 是否有.NET方法可以安全地執行此操作?我想避免自己解析....NET方法來解析字符串與長類型限定符
感謝您的幫助!
我從具有長類型限定符的第三方SW得到一個字符串,例如, 「1L」。 我想解析這到一個Int64,但Int64.TryParse不認識到這是一個Int64。 是否有.NET方法可以安全地執行此操作?我想避免自己解析....NET方法來解析字符串與長類型限定符
感謝您的幫助!
在最簡單的情況下,你可以這樣做:
string sNum = "1L";
int pos = sNum.IndexOf('L');
if (pos == sNum.Length-1)
{
sNum = sNum.Substring(0, sNum.Length-1);
}
long num = int64.Parse(sNum);
所以我不太明白這個轉換,但是如果'L'處於第一個位置,Int64.Parse會工作嗎? – 2013-04-25 14:56:12
@MichaelPerrenoud:根據文檔,「Int64.Parse」想要[空格] [符號]數字[空白]'。對於前導或尾隨類型說明符沒有限制。 – 2013-04-25 16:33:29
現在我明白了,所以尾隨類型說明符(例如'L')並不是真正的標準,而只是它來自哪裏的人爲因素。 – 2013-04-25 16:58:34
從瀏覽的時候,我可以推薦最好是使用正則表達式要麼提取 或刪除非數字字符,然後解析與框架(轉換,解析或TryParse等)。
我挖走這從下面的問題之一,希望它的工作原理:
var originalString = "9L";
var result = Convert.ToInt64(Regex.Replace(originalString, "[^0-9]", String.Empty));
看到這些問題的一些例子(有些,呃,......有趣的替代方法):
謝謝,我希望我可以避免字符串操作,但這會起作用。 – user736570 2013-04-25 16:29:48
那麼這會使「93foobar265」變成「93265」?樂趣。 – 2013-04-25 16:34:40
是的吉姆,不是最乾淨,但我能找到最好的。正則表達式可以很容易地改變,只取代L或l(根據您的評論),但OP並不十分清楚alpha字符的限制或可能的位置可能是什麼 – GrahamMc 2013-04-25 19:23:10
'與string.replace( 「L」, 「」)'? – I4V 2013-04-25 13:47:43
如果它是1)不是第一個非空白字符,則替換'L'(或'l'); 2)它是最後一個字符或緊跟着一個空格字符。 – 2013-04-25 14:51:05