Как проверить есть ли в массиве string симвоы 2 или 3 или 4 ... или 9?

Есть код перевода в десятичную систему с двоичной . Сделал проверку что были токо цыфры а как отсеять все цыфры кроме 1 и 0 ?
Вот код:
string bin = "t";
            bool result;
            int number, dec;
            dec = 0;
            Console.WriteLine("Enter number!");
            do
            {
                bin = Console.ReadLine();
                result = Int32.TryParse(bin, out number);
                if (result)
                {
                    dec = Convert.ToInt32(bin, 2);
                }
                else
                {
                    Console.WriteLine("Incorrect number.",
                                       bin == null ? "<null>" : bin);
                }
            } while (!result);

            Console.WriteLine(dec);
            Console.ReadKey();

Вроде можно сделать чтоб проверяла функция ячейки массива string и смотрела есть ли там цыфры от 2 ло 9
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Отсеять или чем-то заменить - есть метод Replace()

Соответственно
result.Replace(num, string.Empty)
Но т.к. этот метод делает замену только одного значения за раз, то придется либо сделать несколько раз Replace(...).Replace(..)... , либо написать свой метод, который сделает это в цикле. Какой-нибудь экстеншн:
public static class StrExtantion
	{
		public static string ReplaceDigits(this string str, IEnumerable<int> digits)
		{
			var temp = string.Copy(str);
			foreach (var digit in digits)
			{
				temp = temp.Replace(digit.ToString(), string.Empty);
			}
			return temp;
		}
	}

А потом его использовать:
var binResult = result.ReplaceDigits(Enumerable.Range(2,8))

Но можно и одной строчкой сделать:
string temp = string.Copy(result); 
Enumerable.Range(2, 8).ToList().ForEach(x => temp = temp.Replace(x.ToString(), string.Empty));
Console.WriteLine(temp);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы