Я получаю строку от стороннего ПО с квалификатором типа long, например. «1л». Я хочу преобразовать это в Int64, но Int64.TryParse не распознает это как Int64. Есть ли безопасный метод .NET? Хочу не разбираться ...
Спасибо за любую помощь!
Я получаю строку от стороннего ПО с квалификатором типа long, например. «1л». Я хочу преобразовать это в Int64, но Int64.TryParse не распознает это как Int64. Есть ли безопасный метод .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
сработало бы?
- person Mike Perrenoud; 25.04.2013
Int64.Parse
хочет [whitespace][sign]digits[whitespace]
. Не допускается использование описателя типа в начале или в конце.
- person Jim Mischel; 25.04.2013
L
) на самом деле не является стандартным, а скорее всего лишь артефактом того, откуда он исходит.
- person Mike Perrenoud; 25.04.2013
Лучшее, что я могу порекомендовать при просмотре, - это использовать регулярное выражение для извлечения или удаления нечисловых символов, а затем для анализа с помощью фреймворка (Convert, Parse или TryParse и т. Д.).
Я переманил это из одного из приведенных ниже вопросов, надеюсь, что это сработает:
var originalString = "9L";
var result = Convert.ToInt64(Regex.Replace(originalString, "[^0-9]", String.Empty));
См. Эти вопросы для получения некоторых примеров (и некоторых, эээ, ... интересных альтернативных подходов):
L
(илиl
), если это 1) Не первый непробельный символ; и 2) это последний символ или сразу за ним следует пробельный символ. - person Jim Mischel   schedule 25.04.2013