Arduino.ru
как с помощью класса String разбить строку на 3 строки
- Войдите на сайт для отправки комментариев
Пт, 10/05/2013 — 17:20
Aleksan007
Зарегистрирован: 10.05.2013
Допустим имеется строка: «115 200 120»
как ее разбить на
a=115
b=200
c=120
можно конечно с помощью СабСтринг, вот так:
a=строка.substring(0,3);
b=строка.substring(3,7);
c=строка.substring(7,11);
но если у нас будет другая строка: 10 0 125, то получится херня.
- Войдите на сайт для отправки комментариев
Пт, 10/05/2013 — 20:38
Зарегистрирован: 18.02.2013
преобразуй в char[] и разбей
- Войдите на сайт для отправки комментариев
Пт, 10/05/2013 — 19:46
Зарегистрирован: 18.02.2013
#include String Str="10 0 125"; char buffer[11]; int s1, s2, s3; void setup() < // put your setup code here, to run once: Serial.begin(9600); >void loop() < // put your main code here, to run repeatedly: Str.toCharArray(buffer,11); s1=atoi(strtok(buffer," ")); s2=atoi(strtok(NULL," ")); s3=atoi(strtok(NULL," ")); Serial.println(s1); Serial.println(s2); Serial.println(s3); delay(5000); >
- Войдите на сайт для отправки комментариев
Сб, 13/01/2018 — 23:27
Зарегистрирован: 23.11.2017
Хороший способ. У меня между значениями много пробелов и поэтому выводит только первое значение, остальные не выводит. Не подскажете как можно решить проблему?
Я задал вопрос тут, можете ответить и получить бал )
- Войдите на сайт для отправки комментариев
Вс, 14/01/2018 — 06:58
Зарегистрирован: 18.01.2015
Если именно стринг то можно так
trim
IndexOf
remove
И далее в цикле пока есть что парсить.
- Войдите на сайт для отправки комментариев
Пнд, 15/01/2018 — 00:44
Зарегистрирован: 05.08.2014
А если без херни лоховской то
byte i=0; byte j=0; for(;buffer[i];) < if(buffer[i]==' ') < if(i>j) < buffer[i]=0; Serial.println(buffer+j); buffer[i]=' '; >j=i+1; > i++; > Serial.println(buffer+j);
Разбивает по пробелам хоть сто штук, одним проходом без копирования и буферирования. Если надо числа — вместо вывода в сириал надо atoi как выше было писано
- Войдите на сайт для отправки комментариев
Пнд, 15/01/2018 — 03:12
Зарегистрирован: 23.11.2017
У меня не получается разобрать строку, remove удаляю пробелы, а данные только заносятся в s1
void loop() < void loop() < // put your main code here, to run repeatedly: while (Serial1.available()) < delay(3); //delay to allow buffer to fill if (Serial1.available() >0) < c = Serial1.read(); //gets one byte from serial buffer readString += c; //makes the string readString >> readString.getBytes(buffer, 100); s1 = atoi(strtok(buffer, " ")); s2 = atoi(strtok(NULL, " ")); s3 = atoi(strtok(NULL, " ")); Serial.print(s1); Serial.print(" "); Serial.print(s2); Serial.print(" "); Serial.print(s3); Serial.println(); readString = ""; >
мне нужно переводить в int, т.к нужно передать данные на 3 servo. Не хватает опыта, 3-й день не могу решить проблему.

- Войдите на сайт для отправки комментариев
Пнд, 15/01/2018 — 15:38
Зарегистрирован: 23.11.2017
Проблему решил с помощью remove(). Мне нужно было первое и третье показание оси «x» и «z», ось «y» не настраивал.

char c; String x, y, z; String readString; String readString2; String readString3; void setup() < Serial1.begin(9600); Serial.begin(9600); >void loop() < while (Serial1.available()) < delay(3); //delay to allow buffer to fill if (Serial1.available() >0) < c = Serial1.read(); //gets one byte from serial buffer readString += c; //makes the string readString readString2 += c; //makes the string readString readString3 += c; //makes the string readString >> Serial.println(readString); readString.remove(3); x = readString; Serial.print("x= "); Serial.println(x); /* readString2.remove(0,7); y = readString2; Serial.print("y= "); Serial.println(y);*/ readString3.remove(0,13); z = readString3; Serial.print("z= "); Serial.println(z); delay(400); readString = ""; readString2 = ""; readString3 = ""; >
- Войдите на сайт для отправки комментариев
Java lang string как разбить string arduino
Здравствуйте! Вопрос по ардуино.
Подскажите пожалуйста как разбить строку(String) в массив символов?
Так чтобы из строки
String str "one"
получился массив(предполагаю что char, но можно и int) в котором каждый символ из строки вставал в свою ячейку массива. В конце у массива должно быть примерно такое содержимое «o, n, e».
Помогите пожалуйста!
Весь интернет облазил и ничего не нашёл!
Заранее спасибо!
Последний раз редактировалось [Timur]; 25.05.2020 в 17:24 .
Пользователь
Регистрация: 03.06.2019
Сообщений: 48
Ура. Не знаю как выражать эмоции! У меня получилось! Ответ был прямо под носом!
У моего любимого блогера alex gyver’a есть вот эта статья которую я прочитал в первую очередь
https://alexgyver.ru/lessons/strings/
и тут я и нашёл ответ! Он в разделе «Инструменты для String», он здесь первый «charAt()», а точнее не это, а то что в описании «Аналог – myString[index];»
Я попробовал и ЭТО СРАБОТАЛО! Да, да к строке можно обратится также как и к массиву!
Напишите своё мнение о этом способе и если он вам помог то напишите!
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Разбить строку на двумерный массив | Pashka_Noob | Общие вопросы по Java, Java SE, Kotlin | 6 | 31.07.2017 18:33 |
| Пользователь вводит строку,закодированную кодом из таблицы ASCII. Необходимо вывести строку посимвольно. | anasttb | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 28.02.2017 17:20 |
| C++ Перевести строку, в которой записано длинное целое, посимвольно в int массив. | Alendorff | Помощь студентам | 7 | 10.06.2012 14:25 |
| Разбить строку на массив строк с помо*щью символа-разделителя | PotatoCaptain | Общие вопросы C/C++ | 14 | 14.12.2011 17:59 |
| разбить строку | Ceprey | Общие вопросы C/C++ | 10 | 24.12.2009 20:47 |
Как разбить строку на символы java
Чтобы разбить строку на символы в Java , вы можете использовать метод toCharArray() класса String . Этот метод возвращает массив символов, которые составляют данную строку.
String str = "Hello, world!"; char[] chars = str.toCharArray(); for (char c : chars) System.out.println(c); >
Этот код разобьет строку «Hello, world!» на массив символов и напечатает каждый символ в консоли:
Как разбить строку по запятой, кроме случая когда за ней следует пробел?
Есть строка 1,2,3,»4, A»,B, 5,C,6,7,8. Подскажите пожалуйста, как ее разбить на подстроки по запятой но пропустив запятую + пробел? Ниже код который работает, может есть более простой вариант?
String s = "1,2,3,\"4, A\",B, 5,C,6,7,8"; String[] ss; s = s.replaceAll(", ", "#%&"); // меняем "запятая + пробел" на любой символ ss = s.split(","); for (int i = 0; i < ss.length; i++) < System.out.println(ss[i].replaceAll("#%&", ", ")); // возвращаем запятую с пробелом обратно >
Отслеживать
18.5k 4 4 золотых знака 31 31 серебряный знак 45 45 бронзовых знаков