Является ли это допустимым способом проверки, содержит ли строка только восьмеричные числа?
public static bool IsOctal(String toCheck)
{
if (toCheck.Contains(" "))
{
return false;
}
int parsedtoCheck;
var parseOk = int.TryParse(toCheck, out parsedtoCheck);
if (!parseOk)
{
return false;
}
if (Convert.ToInt32(toCheck, 8) != parsedtoCheck)
{
return false;
}
return true;
}
try{Convert.ToInt32(toCheck, 8);return true;}catch{return false}
- person Tim Schmelter   schedule 14.08.2014int.TryParse
, но не вConvert.ToInt32(toCheck, 8)
. И другие значения (например, 10), которые должны быть успешными, вернутfalse
, потому что восьмеричное 10 не равно десятичному 10... - person Jon Skeet   schedule 14.08.2014Convert.ToInt32("10", 8)
? Дело не в том, что C# знает о восьмеричной системе, а в том, чтоConvert.ToInt32(string, int)
знает об этом.Convert.ToInt32("10", 8)
вернет 8, потому что это значение 10 интерпретируется как восьмеричное значение. - person Jon Skeet   schedule 14.08.2014