티스토리 뷰

Arduino

[Arduino] 아두이노로 String 형 변수 이용.

생각많은 소심남 2012. 3. 11. 19:26
지난 포스팅에선 간단하게 배열을 이용해서 LED의 입력포트를 설정하고 불을 켜보는 테스트를 해보았는데 사실 이렇게 눈으로 볼 수 있는 결과를 본다는 건 참 흥미로운 일입니다. 하지만 전전에 다뤘었던 Floating Point 변수를 다루는 건 확인을 컴퓨터로 하는 거라서 조금 안 와닿을 수도 있는데.. 이또한 문법을 배움에 있어서 중요한 요소입니다.
계속해서 이번에는 String 변수를 다뤄보도록 하겠습니다.

사실 string이라는 건 character가 어떤 배열에 담겨 있는 꼴을 말합니다. 그냥 단순한 character가 아니기 때문에 그 자체가 값이 되며 이를 활용해서 값을 저장하거나 여러가지에 써먹을 수도 있습니다. 이번 예제도 시리얼 모니터를 통해서 확인해보겠습니다.

 


첫번째 예제는 String 변수에 This string이라는 줄을 입력하고 그것을 뿌리는 작업이었습니다. 
당연히 Serial Monitor로 확인하면 그 문자들이 그대로 뜨는 것을 확인할 수 있습니다. 이 문자의 크기를 확인해보는 코드는 다음과 같습니다.

 


이번에는 Length라는 함수를 이용해서 해당 String 변수의 크기를 구했습니다. 다들 아시는 내용이겠지만 당연히 공백 스페이스도 하나의 배열칸을 차지하는 것이기 때문에 크기가 11로 찍힙니다.

다음으로 해볼 것은 String 변수끼리 묶을 수 있는 Concat() 함수입니다. 영어로 Concaternate라는 단어가 더하다라는 의미지요. 이역시 그렇습니다. 우선 예시를 위해서 text2에 해당하는 내용을 하나 삽입합니다. 그리고 그 후에 Concat을 적용시켜봅니다.

 


 참고로 지난 포스팅에서 언급하지 않았던 것이 println인데 이건 뉴라인이 적용된 print라고 보시면 됩니다.
우선 text1에 저장되어 있는 내용과 text2에 있던 내용이 합쳐진 것을 확인할 수 있습니다. 그리고 그에 해당한 character 수 역시 더한 값과 동일합니다. (보니까 중간에 띄움을 안했던거 같네요. 정상적으로 하면 25 character가 나와야 됩니다.) 그리고 한가지 더 유의해서 보셔야 할 것은 concat된 결과가 다시 text1으로 덮어 씌우기가 된다는 점입니다. 이를 반증하는 것이 text1을 print 시켰을 때 원래의 This String이 아니라 합쳐진 결과가 나오는 것이지요.

지금 보고있는 String 클래스는 0019버전부터 나오는 개념입니다. 사실 이전까지는 character 변수를 사용해서 string을 구현하던 것이 c의 문법이지요. 그런데 자바의 개념을 빌려와서 조금더 string을 관리하기 편리해졌습니다.
이 stiring에서 특정 순서의 문자를 빼오는 것은 indexOf나 lastIndexOf 함수를 사용해야 합니다. 다음과 같이 해봅니다.
 

 



밑의 두줄만 삽입해서 결과를 확인해봅니다. 그럼 어떻게 출력될까요?
 


아.. 같은 숫자가 나와서 조금 그렇기는 하지만 indexOf는 앞에서 해당 문자가 몇번째에 위치해 있는지를 되돌려주는 함수입니다. lastIndexOf는 이와 반대로 뒤에서부터 새어주는 함수라고 보시면 됩니다. 앞에서도 언급햇지만 string이라는 건 하나의 정해진 배열속에 들어가 있는 형태를 취하고 있습니다. 그래서 몇번째에 저장되어있는지도 실제로 이렇게 확인할 수 있는 겁니다. 참고로 찾는 값이 없으면 -1 값을 되돌려 줍니다.
그래서 이걸 활용하면 쉼표를 인지해서 그 값을 따로 뽑아올 수도 있는 것이지요.그에 대한 내용은 다음 포스팅에서 다뤄보고자 합니다.


-------------------------------------------------------------------------------------------------------------------------

정정 : indexOf와 lastIndexOf 함수의 차이는 https://www.arduino.cc/en/Tutorial/StringIndexOf 에서 예시를 통해 확인하시기 바랍니다.

댓글