Найти числа в строке и перевести их в двоичную систему счисления
есть код, который переводит числа из десятичной системы в двоичную, нужно сделать тоже самое, используя механизм регулярных выражений. Помогите пожалуйста. C#
using System;
namespace global
{
class Program
{ //method separate line at words and separate words at volves and
//other letters, then fusion 2 subwords in word
public String ChangeLine(String str)
{
//cut a line by words
String[] array = str.Split(' ');//раздедение строки на массив подстрок
String result = "";//инициализация возвращаемого значения
for (int i = 0; i < array.GetLength(0); i++){//проход по подстрокам
try{//если можео перевести в число , то перевод в 2
String res = "";
int b = Convert.ToInt32(array[i]);
while (true){//перевод из 10 в 2
res += b % 2;
b = b / 2;
if (b == 0)
break;}
String res_rev = "";//реверс значения
for (int j = res.Length - 1; j >= 0; j--){
res_rev += res[j];}
result += res_rev + ' ';}
catch (Exception ex){//иначе просто добавляем в возвращ
result += array[i] + ' ';}
}
return result;//return final line
}
static void Main(string[] args)
{
Console.WriteLine("Start program:");
String lineIn = Console.ReadLine();
Program lineOut = new Program();
Console.WriteLine(lineOut.ChangeLine(lineIn));
String linev = Console.ReadLine();
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
static void Main(string[] args)
{
string input = Console.ReadLine();
Console.WriteLine(ChangeLine(input));
}
private static string ChangeLine(string input)
{
return Regex.Replace(input, @"\b\d+\b", m => Convert.ToString(int.Parse(m.Value), 2));
}
Вывод в консоль
hello 123 world 256 ! 234
hello 1111011 world 100000000 ! 11101010
123hjh123 123 jkhjh213 kj123 123 hjh213
123hjh123 1111011 jkhjh213 kj123 1111011 hjh213