2015-04-16 5 views
2

У меня есть переменная String, и я хочу извлечь три подстроки, разделенные; к трем строковым переменным.Как разбить строку, используя определенный разделитель в Arduino?

String application_command = "{10,12; 4,5; 2}"; 

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

String application_command = "{10,12,13,9,1; 4,5; 2}" 

String application_command = "{7; 1,2,14; 1}" 

Единственное, что является общим в этих шаблонах, состоит из трех разделов:.

Любое понимание очень ценится. Спасибо

ответ

8

Я думаю, вам нужна функция split-string-into-string-array с пользовательским символом разделителя.

Есть уже несколько источников в Интернете и в stackoverflow (например, Split String into String array).

// https://stackoverflow.com/questions/9072320/split-string-into-string-array 
String getValue(String data, char separator, int index) 
{ 
    int found = 0; 
    int strIndex[] = {0, -1}; 
    int maxIndex = data.length()-1; 

    for(int i=0; i<=maxIndex && found<=index; i++){ 
    if(data.charAt(i)==separator || i==maxIndex){ 
     found++; 
     strIndex[0] = strIndex[1]+1; 
     strIndex[1] = (i == maxIndex) ? i+1 : i; 
    } 
    } 

    return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; 
} 

Вы можете использовать эту функцию следующим образом (с ";" в качестве разделителя):

String part01 = getValue(application_command,';',0); 
String part02 = getValue(application_command,';',1); 
String part03 = getValue(application_command,';',2); 

EDIT: исправлять одиночные кавычки и добавить точку с запятой в примере.

+0

Да, я видел предыдущие ссылки stackoverflow. Ваше решение работает с небольшими изменениями. String part01 = getValue (application_command, ';', 0) ;. Я получил его работу с вашим решением и это изменение. Спасибо за поддержку. –

+0

Вы правы. Одинарные кавычки верны для второго параметра (char), и каждая строка должна, конечно, заканчиваться точкой с запятой. – user3704293

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