예전에 작성한 글인 "[MATLAB] 문자열에서 필요한 데이터만 추출하기, sscanf 함수"에 김진성님께서 질문을 남기셨는데 댓글로 설명하긴 조금 길어서 글을 하나 작성합니다.
질문은 바로 이것이었습니다.
"혹시 53423초보자4536 같은 숫자문자숫자 조합 데이터를 53423/초보자/4536 와 같이 숫자/문자/숫자로 나눌 수 있는 방법이 있을까요?"
질문을 요약하자면, 숫자와 문자의 조합으로 구성된 문자열에서 숫자와 문자를 각각 나눠서 추출하는 방법에 대한 질의입니다.
이를 가능케 하는 코드를 작성해봤습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
clc, clear, close all
str = '53423초보자4536';
len = strlength(str);
TF = isstrprop(str, 'digit');
check = TF(1);
starts = [];
for i = 1:len
if TF(i) ~= check
starts = [starts, i];
check = TF(i);
end
end
ends = [starts - 1, len];
ends_nums = size(ends, 2);
begin = 1;
for i = 1:ends_nums
divided_str{i, 1} = str(begin:ends(i));
begin = 1 + ends(i);
end
|
cs |
제대로 분리해서 추출해내는지 확인해보도록 하겠습니다.
제대로 추출되었죠? 그러면 또다른 문자열에 대해서도 테스트해보겠습니다.
이번에는 문자열을 '1저는23초보자456입니다78' 으로 바꿔서 코드를 실행해보겠습니다.
역시 잘 되는 것을 확인할 수 있습니다. 김진성님께 도움이 되었으면 좋겠네요.^^
'Dev > matlab' 카테고리의 다른 글
[MATLAB] 그래프를 그릴 때 축의 눈금 또는 값을 지우려면? (0) | 2020.07.09 |
---|---|
[MATLAB] 그래프를 그릴 때 유용하게 사용되는 linspace 함수 (0) | 2020.06.30 |
[MATLAB] 데이터 정렬하기, sort 함수 (응용: 학점 부여 프로그램) (0) | 2020.06.04 |
[MATLAB] 이미지 크기 조정하기, imresize 함수 (0) | 2020.05.29 |
[MATLAB] 영상 좌우 반전, 상하 반전, 회전하기, fliplr, flipud, rot90 함수 (1) | 2019.12.17 |
[MATLAB] inline 함수 활용하기 (0) | 2019.12.16 |
[MATLAB] 그레이스케일 이미지를 RGB 이미지로 멋드러지게 표현하기, ind2rgb 함수 (0) | 2019.11.29 |
[MATLAB] 반올림, 올림, 내림, round, ceil, floor 함수 (0) | 2019.11.09 |