Перейти к содержимому

Как из int сделать string

  • автор:

Руководство по программированию на C#. Преобразование строки в число

Для преобразования string в число используется вызов метода Parse или TryParse , который можно найти в числовых типах ( int , long , double и т. д.), или используются методы в классе System.Convert.

Немного эффективнее и проще вызвать метод TryParse (например, int.TryParse(«11», out number) ) или метод Parse (например, var number = int.Parse(«11») ). Использование метода Convert более удобно для общих объектов, реализующих IConvertible.

Можно использовать методы Parse или TryParse в числовом типе, который предположительно содержит строка, таком как тип System.Int32. Метод Convert.ToInt32 использует Parse внутри себя. Метод Parse возвращает преобразованное число; метод TryParse возвращает логическое значение, которое указывает, успешно ли выполнено преобразование, и возвращает преобразованное число в параметр out . Если строка имеет недопустимый формат, Parse создает исключение, а TryParse возвращает значение false . В случае сбоя операции синтаксического анализа при вызове метода Parse вы всегда должны использовать обработку исключений, чтобы перехватить FormatException.

Вызов метода Parse или TryParse

Методы Parse и TryParse игнорируют пробелы в начале и в конце строки, но все остальные символы должны быть символами, которые образуют соответствующий числовой тип ( int , long , ulong , float , decimal и т. д.). Любые пробелы в строке, образующие число, приводят к ошибке. Например, можно использовать для decimal.TryParse синтаксического анализа «10», «10,3» или «10», но этот метод нельзя использовать для синтаксического анализа 10 из «10X», «1 0» (обратите внимание на внедренное пространство), «10,3» (обратите внимание на внедренное пространство), «10e1» ( float.TryParse здесь работает) и т. д. Строку со значением null или String.Empty невозможно успешно проанализировать. Вы можете проверить наличие NULL или пустой строки, прежде чем пытаться ее проанализировать, вызвав метод String.IsNullOrEmpty.

В указанном ниже примере демонстрируются успешные и неуспешные вызовы методов Parse и TryParse .

using System; public static class StringConversion < public static void Main() < string input = String.Empty; try < int result = Int32.Parse(input); Console.WriteLine(result); >catch (FormatException) < Console.WriteLine($"Unable to parse ''"); > // Output: Unable to parse '' try < int numVal = Int32.Parse("-105"); Console.WriteLine(numVal); >catch (FormatException e) < Console.WriteLine(e.Message); >// Output: -105 if (Int32.TryParse("-105", out int j)) < Console.WriteLine(j); >else < Console.WriteLine("String could not be parsed."); >// Output: -105 try < int m = Int32.Parse("abc"); >catch (FormatException e) < Console.WriteLine(e.Message); >// Output: Input string was not in a correct format. const string inputString = "abc"; if (Int32.TryParse(inputString, out int numValue)) < Console.WriteLine(numValue); >else < Console.WriteLine($"Int32.TryParse could not parse '' to an int."); > // Output: Int32.TryParse could not parse 'abc' to an int. > > 

В следующем примере показан один из подходов к анализу строки, которая, как ожидается, будет включать начальные числовые символы (включая шестнадцатеричные символы) и конечные нечисловые символы. Он назначает допустимые символы в начале новой строки перед вызовом метода TryParse. Поскольку анализируемые строки содержат небольшое количество символов, в примере вызывается метод String.Concat для назначения допустимых символов новой строке. Для большей строки можете использовать класс StringBuilder.

using System; public static class StringConversion < public static void Main() < var str = " 10FFxxx"; string numericString = string.Empty; foreach (var c in str) < // Check for numeric characters (hex in this case) or leading or trailing spaces. if ((c >= '0' && c = 'A' && char.ToUpperInvariant(c) else < break; >> if (int.TryParse(numericString, System.Globalization.NumberStyles.HexNumber, null, out int i)) < Console.WriteLine($"'' --> '' --> "); > // Output: ' 10FFxxx' --> ' 10FF' --> 4351 str = " -10FFXXX"; numericString = ""; foreach (char c in str) < // Check for numeric characters (0-9), a negative sign, or leading or trailing spaces. if ((c >= '0' && c else < break; >> if (int.TryParse(numericString, out int j)) < Console.WriteLine($"'' --> '' --> "); > // Output: ' -10FFXXX' --> ' -10' --> -10 > > 

Вызов методов класса Convert

В следующей таблице перечислены некоторые методы класса Convert, которые можно использовать для преобразования строки в число.

Числовой тип Метод
decimal ToDecimal(String)
float ToSingle(String)
double ToDouble(String)
short ToInt16(String)
int ToInt32(String)
long ToInt64(String)
ushort ToUInt16(String)
uint ToUInt32(String)
ulong ToUInt64(String)

В данном примере вызывается метод Convert.ToInt32(String) для преобразования входных данных string в значение типа int. Пример перехватывает два наиболее распространенных исключения, которые могут создаваться этим методом, — FormatException и OverflowException. Если итоговое число можно увеличить, не превышая Int32.MaxValue, пример добавляет 1 к результату и отображает вывод.

using System; public class ConvertStringExample1 < static void Main(string[] args) < int numVal = -1; bool repeat = true; while (repeat) < Console.Write("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive): "); string? input = Console.ReadLine(); // ToInt32 can throw FormatException or OverflowException. try < numVal = Convert.ToInt32(input); if (numVal < Int32.MaxValue) < Console.WriteLine("The new value is ", ++numVal); > else < Console.WriteLine("numVal cannot be incremented beyond its current value"); >> catch (FormatException) < Console.WriteLine("Input string is not a sequence of digits."); >catch (OverflowException) < Console.WriteLine("The number cannot fit in an Int32."); >Console.Write("Go again? Y/N: "); string? go = Console.ReadLine(); if (go?.ToUpper() != "Y") < repeat = false; >> > > // Sample Output: // Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive): 473 // The new value is 474 // Go again? Y/N: y // Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive): 2147483647 // numVal cannot be incremented beyond its current value // Go again? Y/N: y // Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive): -1000 // The new value is -999 // Go again? Y/N: n 

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Вопрос-ответ: как в Java правильно конвертировать String в int?

Java-университет

int в String — очень просто, и вообще практически любой примитивный тип приводится к String без проблем.

 int x = 5; String text = "X lang-java line-numbers">int i = Integer.parseInt (myString);

Если строка, обозначенная переменной myString , является допустимым целым числом, например «1», «200», Java спокойно преобразует её в примитивный тип данных int . Если по какой-либо причине это не удается, подобное действие может вызвать исключение NumberFormatException , поэтому чтобы программа работала корректно для любой строки, нам нужно немного больше кода. Программа, которая демонстрирует метод преобразования Java String в int , управление для возможного NumberFormatException :

 public class JavaStringToIntExample < public static void main (String[] args) < // String s = "fred"; // используйте это, если вам нужно протестировать //исключение ниже String s = "100"; try < // именно здесь String преобразуется в int int i = Integer.parseInt(s.trim()); // выведем на экран значение после конвертации System.out.println("int i = " + i); >catch (NumberFormatException nfe) < System.out.println("NumberFormatException: " + nfe.getMessage()); >> 

Обсуждение

Когда вы изучите пример выше, вы увидите, что метод Integer.parseInt (s.trim ()) используется для превращения строки s в целое число i , и происходит это в следующей строке кода:

int i = Integer.parseInt (s.trim ())
  • Integer.toString (int i) используется для преобразования int в строки Java.
  • Если вы хотите преобразовать объект String в объект Integer (а не примитивный класс int ), используйте метод valueOf () для класса Integer вместо метода parseInt () .
  • Если вам нужно преобразовать строки в дополнительные примитивные поля Java, используйте такие методы, как Long.parseLong () и ему подобные.

Преобразование строки в число в Python. Особенности преобразования числа в строку

Python_Deep_21.1-5020-77b56f.png

Иногда нам нужно выполнить преобразование строки в целое число либо в число с плавающей точкой. Потребность в этом возникает для осуществления ряда операций. Как это сделать в Python, мы сейчас и поговорим.

Чтобы осуществить преобразование строки в целое число либо число с плавающей точкой, в Python используют функции int и float. Если вы захотите выполнить преобразование без применения данных функций, то получите ошибку. Например, к ошибке приведёт следующий код:

 
str_a = ’50’ b = 10 c = str_a + b print (c)
Преобразование строки в целое число с помощью int() в Python

Давайте посмотрим на следующий участок кода:

 
str_a = '50' b = 10 c = int(str_a) + b print ("The value of c = ",c)

С его помощью мы выведем значение переменной «c», которое будет представлять собой сумму переменных «str_a» и «b».

Преобразуем десятичную строку в число с плавающей точкой в Python

Для преобразования строки в число с плавающей точкой мы можем использовать float:

 
#Преобразование string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c = ",c)

Однако учтите, что если вы захотите задействовать тут функцию int() , это приведёт к ошибке.

Преобразуем список строковых чисел в список целых чисел в Python

Бывает, что в Python необходимо выполнить преобразование строки из чисел, содержащихся в списке. В таких случаях нам поможет генератор списков. Таким образом создаётся новый список, где можно использовать функцию int() в каждой итерации:

 
#Преобразование string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)

Мы выведем новый список, который будет состоять из целых чисел, полученных из строк.

Преобразуем список строк в список чисел с плавающей точкой в Python

Аналогично можно применять float вместо int для выполнения преобразования списка, включающего в себя строки из целых чисел:

 
#Преобразование string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)
Преобразование строки с запятыми в число в Python

Что делать, если у нас строка наподобие «1,000,000»? Если мы попробуем выполнить её преобразование с помощью функций int() либо float() , мы получим ошибку.

Одно из решений — применение import locale:

 
locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )

Приём работает, но он не идеален. Другое решение — заменить запятые на пустые строки, а потом применить уже известную нам функцию int:

 
str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)

Результат — целое значение. Это же решение мы можем использовать и для преобразования строки в число с плавающей точкой в Python.

Преобразование строки в число при расчёте високосного года в Python

Как известно, пользовательский ввод в «Пайтоне» воспринимается как строка. К примеру, в следующем коде программа попросит пользователя ввести год, а после ввода значений программа сообщит, является ли этот год високосным. При этом введённое значение сначала будет преобразовано в целое число, а потом будет задействована формула расчёта високосного года:

 
#Расчёт високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")

Таким образом происходит преобразование вводимой строки в целое число, а потом это число применяется для расчёта.

Как преобразовать целое число в строку в Python?

При выполнении преобразования целых чисел в строки используется функция str() . Она принимает объект, который может иметь тип int, float, double и так далее.

Давайте посмотрим на пример преобразования переменной int в строку, которая потом применяется как строка для конкатенации:

 
#Преобразование int в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))

Результат будет следующим:

 
str function for int to string456

Кстати, если бы целочисленная переменная была нами использована без str() , результатом стала бы ошибка TypeError.

Как из int сделать string

Нередко может возникнуть необходимость объединить строку с данными других типов, например, числами. Однако объединить строку мы можем только с другой строкой. Поэтому данные других типов вначале необходимо преобразовать в строку. Для преобразования в строку применяется функция std:to_string() , в которую передается преобразуемое значение:

#include #include int main() < unsigned age; std::string message< "Age: " + std::to_string(age)>; std::cout 

Функции преобразования из строки в число

Нередко может вощникнуть противиположная задача - преобразовать строку в другой тип. Есть ряд функций, которые преобразуют строку в число определенного типа:

  • stoi() : преобразует в тип int
  • stol() : в long
  • stoll() : в long long
  • stoul() : в unsigned long
  • stoull() : в unsigned long long
  • stof() : в float
  • stod() : в double
  • stold() : в long double

Все они определены в модуле , работают однотипно и в качестве параметра принимают преобразуемую строку:

std::string str< "123" >; int n< std::stoi(str) >; // n == 123

Преобразование строки в указатель на символы

При необходимости можно преобразовать значение типа string в указатель на символы. Для преобразования в указатель на константную строку применяется метод c_str() :

#include #include int main() < std::string message ; const char* message_ptr = message.c_str(); // преобразуем в указатель std::cout

Для получения указателя также можно применять метод data() , который возвращает указатель на неконстантное значение, если объект string не является константой.

#include #include int main() < std::string message ; char* message_ptr = message.data(); // преобразуем в указатель std::cout

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *