Arduino에서 문자열 분할

Ammar Ali 2023년10월12일
Arduino에서 문자열 분할

이 튜토리얼에서는 Arduino의 substring() 함수를 사용하여 문자열을 분할하는 방법에 대해 설명합니다.

substring() 함수를 사용하여 Arduino에서 문자열 분할

Arduino는 주어진 문자열을 분할하는 내장 함수 substring()을 제공합니다. 시작 및 끝 인덱스 값을 사용하여 문자열을 분할할 수 있습니다.

substring() 함수에는 두 개의 인수가 있습니다. 첫 번째 인수는 분할 프로세스를 시작하려는 시작 인덱스 값이고 두 번째 인수는 분할 프로세스가 중지되는 종료 인덱스 값입니다.

통사론:

Sub_string = MyString.substring(from, to);

Sub_string 변수에는 substring() 함수의 출력이 포함되고 MyString 변수에는 분할하려는 원래 문자열이 포함됩니다. from 변수는 시작 인덱스를 포함하고 to 변수는 끝 인덱스를 포함합니다.

문자열을 정의하고 substring() 함수를 사용하여 분할하고 Arduino의 직렬 모니터에 인쇄해 보겠습니다.

예시:

String My_S = "hello world";

void setup() { Serial.begin(9600); }
void loop() {
  String sub_S = My_S.substring(0, 5);
  Serial.println(sub_S);
  delay(1000);
}

출력:

hello

위의 코드에서 Serial.println() 함수는 결과를 Arduino의 직렬 모니터에 출력합니다. 문자열 분할은 0에서 시작하여 0 인덱스 문자를 포함하고 인덱스 5에 있는 문자를 제외하고 인덱스 5에서 끝납니다.

Arduino의 indexOf() 함수를 사용하여 문자 인덱스를 찾을 수도 있습니다. 함수의 인덱스는 두 개의 인수를 허용합니다.

첫 번째 인수는 필수이며 찾고자 하는 인덱스의 문자 또는 문자열을 나타냅니다. 두 번째 인수는 선택 사항이며 문자의 인덱스를 찾기 위한 시작 인덱스를 나타냅니다.

기본적으로 indexOf() 함수는 주어진 문자의 인덱스를 찾기 위해 처음부터 문자열 검색을 시작하지만 indexOf() 함수의 두 번째 인수를 사용하여 인덱스를 시작점으로 전달할 수도 있습니다.

통사론:

int index = MyString.indexOf(val, from);

index 변수는 위 코드의 문자 또는 문자열을 포함하는 val 변수 인덱스를 저장합니다. from 변수는 주어진 문자의 인덱스를 찾기 위한 시작점으로 사용되는 시작 인덱스를 정의합니다.

substring()에 전달할 문자 인덱스를 모를 때 indexOf() 함수를 사용합니다.

예를 들어, 공백 문자를 끝 인덱스로 사용하여 주어진 문자열을 분할하려는 경우 indexOf() 함수를 사용하여 공백 문자의 인덱스를 찾은 다음 substring() 함수 내에서 사용할 수 있습니다. 문자열을 분할합니다.

indexOf() 함수는 주어진 문자열에서 인덱스를 찾을 수 없는 경우 -1을 반환합니다.

예시:

String My_S = "hello world";

void setup() { Serial.begin(9600); }
void loop() {
  int index = My_S.indexOf(' ');
  String sub_S = My_S.substring(0, index);
  Serial.println(index);
  Serial.println(sub_S);
  delay(1000);
}

출력:

5
hello

위의 코드에서 index 변수는 주어진 문자열에 있는 공백 문자의 인덱스를 포함합니다. 보시다시피 직렬 모니터 창에 인덱스와 문자열 분할 결과를 표시했습니다.

줄 수에 따라 문자열을 분할할 수도 있습니다.

예를 들어 문자열에 여러 줄의 텍스트가 포함되어 있고 각 줄을 별도의 문자열로 분할하여 가져오려는 경우입니다.

indexOf('\n') 함수를 사용하여 새 줄의 인덱스를 찾고 그에 따라 주어진 문자열을 분할할 수 있습니다.

indexOf() 함수는 주어진 문자열의 시작 부분부터 인덱스 검색을 시작합니다. 그러나 문자열 끝에서 시작하여 인덱스를 검색하는 lastIndexOf() 함수를 사용할 수도 있습니다.

두 번째 인수로 lastIndexOf() 함수 내부에 시작 인덱스를 전달할 수도 있습니다. 예를 들어, 3줄이 포함된 문자열을 분할하고 마지막 줄을 가져와 직렬 모니터 창에 표시해 보겠습니다.

예시:

String My_S = "hello world\nGreetings\nPeople";

void setup() {
  Serial.begin(9600);
  Serial.println(My_S);
}
void loop() {
  int index = My_S.lastIndexOf('\n');
  int length = My_S.length();
  String sub_S = My_S.substring(index, length);
  Serial.println(sub_S);
  delay(100000);
}

출력:

hello world
Greetings
People

People

주어진 문자열에 있는 텍스트의 마지막 줄만 가져오기를 원하기 때문에 위의 코드에서 lastIndexOf() 함수를 사용했습니다. 처음 세 줄은 출력에서 ​​주어진 문자열이고 네 번째 줄은 문자열 분할의 결과입니다.

length() 함수를 사용하여 substring() 내부의 끝 인덱스 값으로 사용될 주어진 문자열의 길이를 가져왔습니다. 루프가 프로세스를 반복하기 때문에 delay() 함수를 사용하여 코드 실행에 약간의 지연을 추가했습니다.

분할만 하고 싶다면 한 번만 실행되는 setup() 함수 안에 코드를 작성할 수 있습니다.

모든 문자를 기반으로 문자열을 분할할 수 있습니다. indexOf() 함수를 사용하여 인덱스를 찾기만 하면 됩니다.

substring() 함수를 사용하여 문자열을 분할할 수 있습니다. 주어진 문자열에서 모든 라인을 개별적으로 얻고 싶다고 가정합니다. 한 줄을 가져와서 나머지 문자열을 변수에 저장하고 모든 줄이 추출될 때까지 루프를 사용하여 동일한 작업을 다시 수행해야 합니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - Arduino String