Member 14589606 Ответов: 3

Отделить/извлечь номер из строки


Привет. Как мне отделить/извлечь значение 22.2 из следующего:

0065.0 0022.2 0050.0 0029.1 0100.0 0100.0 0000.0 0011.2 0000.0 -000.1 0000.0 -000.1 0000.0 -000.1 00000000000000000000000000000000


Что я уже пробовал:

Это выход устройства, и мне нужно прочитать параметр 2, который является 22.2 любые идеи будут оценены по достоинству

F-ES Sitecore

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

твоя тетрадь.Подстрока(9, 4)

Это вернет 4 символа из позиции 9. Если формат может измениться, то мы не сможем ответить на этот вопрос, пока не узнаем, как он может измениться.

Member 14589606

Там написано, что он превышает индекс.
Я получаю ответ от устройства и сохраняю его в строке, а затем пытаюсь отделить его или использовать ваш метод yourString.Подстрока(9,4).

Если я попробую writeLine на строке он печатает каждое значение в отдельной строке вот так
0
0
6
5

Следовательно, он утверждает, что индекс превышает

3 Ответов

Рейтинг:
2

Girma

строка s ="0065.0 0022.2 0050.0 0029.1 0100.0 0100.0 0000.0 0011.2 0000.0 -000.1 0000.0 -000.1 0000.0 -000.1 00000000000000000000000000000000";
строка [] ОБР= С. сплит(" ");
string out=arr[1];
while(out.indexOf("0") == 0){
out = out.подстрока(1);
}
Приставка.WriteLine(out);


Richard MacCutchan

Это не C#.

Рейтинг:
1

Girma

Извините за Java подобный код раньше

здесь

string s = "0065.0 0022.2 0050.0 0029.1 0100.0 0100.0 0000.0 0011.2 0000.0 -000.1 0000.0 -000.1 0000.0 -000.1 00000000000000000000000000000000";
string [] arr= s.Split(' ');
//Char out = arr[1];
while(arr[1].IndexOf('0') == 0){
arr[1] = arr[1].Substring(1);
}
Console.WriteLine(arr[1]);


Рейтинг:
0

RickZeeland

string str = "0065.0 0022.2 0050.0 0029.1 0100.0 0100.0 0000.0 0011.2 0000.0 -000.1 0000.0 -000.1 0000.0 -000.1 00000000000000000000000000000000";
string[] arr = str.Split(' ');
double number;

// Strip non-numeric characters
arr[1] = string(arr[1].Where(c => char.IsDigit(c)).ToArray());

if (Double.TryParse(arr[1], out number)) 
            Debug.Print("The 2nd value = " + number);
Способ удаления нечисловых символов из строки см. В разделе: Удаление нечисловых символов в строке - переполнение стека[^]


Maciej Los

Этот ответ почти идеален...
Примечание: код Aboce возвращает '0022.2' вместо 22.2
:)

RickZeeland

Исправленный :)
Но, похоже, есть и другие проблемы, такие как символы, отличные от ASCII, в строке ...

Maciej Los

5ed!

Member 14589606

Там написано, что он превышает индекс.
Я получаю ответ от устройства и сохраняю его в строке, а затем пытаюсь отделить его или использовать ваш метод

Если я попробую writeLine на строке он печатает каждое значение в отдельной строке вот так
0
0
6
5

Следовательно, он утверждает, что индекс превышает

RickZeeland

Смотрите обновленное решение.