Работа со строкой
- Войдите на сайт для отправки комментариев
Вс, 15/05/2016 - 07:44
если допустим есть строка abcde12345, то как выделить из этой строки только числа?
если допустим есть строка abcde12345, то как выделить из этой строки только числа?
чтобы на выходе получилось только 12345
Ну, это можно сделать 100500 способами разной эффективности и экзотичности.
А как Вы пытались?
1. http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
2. А буквы совсем не нужны? Так выбрасывайте их сразу при чтении и не надо будет вообще ничего потом искать. Если буквы не нужны, то нафига Вы пишете:
Пишите сразу
И всего делов. Ничего, кроме цифр туда не попадёт.
Мне буквы нужны как пауза между числами
char one_char; String g,d,e; int a, c; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()>0) { one_char=Serial.read(); g+=one_char; } for(int i=0; i<g.Lenght; i++) { if(g[i]=="1" || g[i]=="2" || g[i]=="3" || g[i]=="4" || g[i]=="5" || g[i]=="6" || g[i]=="7" || g[i]=="8" || g[i]=="9" || g[i]=="0") { d[i]=g[i];//цифры } else e[i]=g[i];//буквы } Serial.println(d); Serial.println(e); }Если честно не знаю можно ли так работать со стрингами) Можно попробовать
со стрингами никак))
Не получается?
нет
#include <SPI.h> #include <WString.h> char one_char,stroka; String g,d="",e=""; int a, c; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()>0) { one_char=Serial.read(); g += one_char; } for(int i=0; i<g.length(); i++) { if(g.charAt(i)=='1' || g.charAt(i)=='2' || g.charAt(i)=='3') //тут все до нуля сравнить { d += g.charAt(i);//цифры } else e += g.charAt(i);//буквы } Serial.println(d); Serial.println(e); }Вот так попробуй
#include <SPI.h> #include <WString.h> char one_char,stroka; String g,d="",e=""; int a, c; void setup() { Serial.begin(9600); } void loop() { g = "123abc45dd"; for(int i=0; i<g.length(); i++) { if(g.charAt(i)=='1' || g.charAt(i)=='2' || g.charAt(i)=='3') //тут все до нуля сравнить { d += g.charAt(i);//цифры } else e += g.charAt(i);//буквы } Serial.println(d); Serial.println(e); }А еще лучше так)
Спасибо конечно, но все равно не то. Видите ли, когда я задаю любую строку на ком порте. Типа asdsdf213smsdf234. То просто хочу чтобы только числа выделял. Чтобы шло примерно так:
213
234
213
234
213
Ну типо того.
#include <SPI.h> #include <WString.h> char one_char,stroka; String g,d="",e=""; int a, c; void setup() { Serial.begin(9600); } void loop() { int k = 0; if (Serial.available()>0) { one_char=Serial.read(); g += one_char; } for(int i=0; i<g.length(); i++) { if(g.charAt(i)=='1' || g.charAt(i)=='2' || g.charAt(i)=='3') //тут все до нуля сравнить { d += g.charAt(i);//цифры k=1; } else { e += g.charAt(i);//буквы k=2; } if(k==2 && d.length()>0)//После того как считали все цифры и начались буквы - выводим цифры на ком порт { Serial.println(d); d=""; } } d=""; e=""; }Должно выводиться именно то, что ты хотел. Отпишись работает или нет
УРААА!!! Все заработало!!! Спасибо за помощь