Java lang string как разбить string arduino
Перейти к содержимому

Java lang string как разбить string arduino

  • автор:

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 бронзовых знаков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *