Отделение чисел и знаков в строке
Задача:
Написать калькулятор выражений.
Есть выражение: 3+6/87*120.
Я хочу сделать так, чтобы у меня получился строковый массив:
["3", "+", "6", "/", "87", "*", "120"].
Как это можно сделать?
Ответы (2 шт):
Автор решения: OXYGEN
→ Ссылка
Если я все правельно понял должно быть так :
на входе : string a = "3+6/87*120-100";
на выходе: ["3", "+", "6", "/", "87", "*", "120","-","100"]
сам код :
public string[] GetArr(string str)
{
var s = str.Split(new[] { '+', '/', '*', '-' });
int size = s.Length + s.Length - 1;
string[] arr = new string[size];
for (int i = 0, j = 0; i < s.Length; i++, j = j + 2)
{
arr[j] = s[i];
if (i != s.Length - 1)
{
int index = str.IndexOf(s[i], StringComparison.Ordinal);
index = index + s[i].Length;
arr[j + 1] = str[index].ToString();
}
}
return arr;
}
Автор решения: Qwertiy
→ Ссылка
using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var s = "3+6/87*120";
var tokens = Regex.Matches(s, @"[-+/*]|\d+").OfType<Match>().Select(m => m.Value).ToList();
Console.WriteLine(String.Join("\n", tokens));
}
}