2017-01-10 5 views
0

Ниже приведен фрагмент кода, который я написалПреобразование строки в массив целых чисел

string arrayToConvert = "$78 89 12 78 89 12%"; 
string s2 = s1.Substring(1, s1.Length - (2)); 

Есть 2 цели, которые должны быть достигнуты

  1. Отсоединение первый и последний символ
  2. Передача строковые данные в массив целых чисел

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

int[] ia = s1.Split(' ').Select(int.Parse).ToArray(); 

и

int n; 
int[] ia = s1.Split(' ').Select(s => int.TryParse(s, out n) ? n : 0).ToArray(); 

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

+0

Как вы вывести int []? –

+0

Я не могу воспроизвести это. Первый фрагмент работает '' 78 89 12 78 89 12 ".Split (''). Выберите (int.Parse) .ToArray()' возвращает массив с 6 элементами, значения которых составляют 78, 89 и т. Д. –

+0

Используете ли вы возможно, неправильные строки? Исходная строка - 'arrayToConvert', но вы обрезаете другую строку s1. Наконец, вы пытаетесь разделить эту строку s1, а не обрезанную. –

ответ

1

Возможно, вы используете неправильные строчки. Ваша исходная строка - `arrayToConvert, но вы пытаетесь очистить другую строку, s1. Наконец, вы пытаетесь разделить s1, а не очистить s2.

Следующая строка возвращает массив с ожидаемыми значениями:

var ints= "$78 89 12 78 89 12%" 
       .Trim(new[]{'$','%'}) 
       .Split(' ') 
       .Select(int.Parse) 
       .ToArray(); 

Я использовал Trim, а не Substring просто поместить все в одном заявлении.

+0

Это, безусловно, самое простое решение, с которым я столкнулся. Я ценю помощь, спасибо. –

+0

Сэр, наоборот, если мне пришлось устранить все специальные символы, алфавиты и сохранить только цифры, это строка. Например, «67%!» или "$ 127a%". Я получаю данные из последовательного порта, и в некоторых случаях есть алфавиты/специальные символы между $ и% или могут быть числом после% –

+0

@amatuer_programmer, если у вас есть другой вопрос, разместите его как новый вопрос, а не как комментарий –

Смежные вопросы