public static bool TryParseInt([CanBeNull] string s, out int value) {
if (s == null) {
value = 0;
return false;
}
if (s.StartsWith("0x", StringComparison.OrdinalIgnoreCase) &&
int.TryParse(s.Substring(2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out value) ||
int.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) {
return true;
}
if (_parseInt == null) {
_parseInt = new Regex(@"-? *\d+");
}
var match = _parseInt.Match(s);
if (match.Success) {
return int.TryParse(match.Value.Replace(" ", ""), NumberStyles.Any,
CultureInfo.InvariantCulture, out value);
}
value = 0;
return false;
}