У меня есть строка, которая иногда имеет запятую, разделяющую число, например 1,500
, и мне нужно преобразовать это в Int, в настоящее время он бросает исключение, может кто-нибудь сказать мне, как исправить это так что иногда я могу вводить числа с запятыми и другими моментами с запятыми, и он все равно будет преобразован.Convert.ToInt32() строка с запятой
ответ
Вы можете использовать int.Parse
и добавить NumberStyles.AllowThousands
флаг:
int num = int.Parse(toParse, NumberStyles.AllowThousands);
Или int.TryParse
давая вам знать, если операция выполнена:
int num;
if (int.TryParse(toParse, NumberStyles.AllowThousands,
CultureInfo.InvariantCulture, out num))
{
// parse successful, use 'num'
}
Ты шутишь, .Net может это сделать ?! Ницца! – Will
Ницца, спасибо. –
Любите флаг! Просто осознайте его существование .. спасибо @CMS – nonintanon
Вы можете сделать replace(';', '')
, прежде чем преобразовывать его в int.
Спасибо, я не знал, что в C# было так просто ... подумал, что мне нужно было сделать RegEx, чтобы заменить их. –
Если вам не нужно беспокоиться о правилах для разных стран (например, некоторые используют запятую в качестве десятичной позиции вместо разделителя тысяч), тогда сначала просто разделите запятые.
например
string nastyNumber = "1,234";
int result = int.Parse(nastyNumber.Replace(",", ""));
(заменить Int с двойным, если вам нужно с плавающей точкой)
Вы можете использовать Decimal.Parse()
, а затем направить результат на int
. Это также работает с текущей культурой, или вы можете указать CultureInfo
для использования. Нет необходимости вручную обрабатывать запятые, десятичные точки и т. Д., Все это встроено в .NET.
Вы можете заменить запятые String.Empty
до вызова Convert.ToInt32()
, или вы можете посмотреть в использовании Int32.Parse()
или Int32.TryParse()
с NumberStyles.AllowThousands
в качестве одного из параметров.
Что с грубой силой предложений удаления запятых ?? Что, если строка что-то вроде «1,1,1»? Действительно ли это число? Удаление запятых сделает его допустимым числом и сделает преобразование семантически неправильным.
Существует причина, по которой существуют NumberStyles, и метод Int.Parse() может анализировать или не учитывать стиль номера.
'int.Parse (" 1,1,1 ", NumberStyles.AllowThousands);' возвращает '111', поэтому .NET действительно считает, что это допустимое число. – nunzabar
Вы можете использовать код
int num = Strings.Replace(str, ",", string.Empty);
Это заменяет все вхождения "" с "" (пустая строка). Таким образом, 1000000 оборотов 1000000
- 1. Разница между Convert.ToInt32 (строка) и Int32.Parse?
- 2. Строка Номер с запятой
- 3. Строка Конкатенация с запятой
- 4. Отдельная строка с запятой
- 5. Select2 box, строка с запятой для запятой
- 6. Ошибка с convert.toint32
- 7. Сплит-строка с альтернативной запятой (,)
- 8. Convert.ToInt32 in C#
- 9. FormatException в Convert.ToInt32
- 10. Convert.ToInt32 по сравнению с TryParse
- 11. Строка ввода не была в правильном формате. Convert.ToInt32 (переменная)
- 12. Javascript строка разделенной запятой
- 13. Convert.ToInt32 не в правильном формате
- 14. Разделительная строка с запятой с регулярным выражением
- 15. Convert.ToInt32 - Keep Preceding Zero
- 16. MySQL: строка с запятой внутри IN()
- 17. разделенная запятой строка с предварительным поиском
- 18. Spliting строка надвое запятой с помощью питона
- 19. Строка обрезки, начинающаяся с запятой - Excel
- 20. Vb Convert.ToInt32 синтаксис
- 21. Почему существует Convert.ToInt32 (Int32)?
- 22. Linq Convert.ToInt32 в Query
- 23. Почему существует Convert.ToInt32 (DateTime)?
- 24. Почему Convert.ToInt32 принимает IFormatProvider?
- 25. Int32.Parse() VS Convert.ToInt32()?
- 26. ASP.NET Login, Convert.ToInt32();
- 27. Mysql query ... WHERE (строка, разделенная запятыми) IN (строка с запятой)
- 28. Первое значение, разделенное запятой, строка
- 29. оракул разделен запятой цитата строка
- 30. Расщепление строка запятой в Python
Не хотите ли вы преобразовать это в два типа? Используйте String.Split(). –
Удалите запятые перед преобразованием. –
У меня такая же проблема @ big-z. Я удалил запятые: bool totalPriceConversionResult = decimal.TryParse (txtTotalPrice.Text.Replace (",", ""), out totalPrice) и преобразовать его в: TotalPrice = totalPriceConversionResult? Convert.ToInt32 (totalPrice): 0. но это дает мне 0 вау. http://stackoverflow.com/questions/37359906 –