내가 여러를 제거하는 루프를 작성하려는 알고 단어 사이에 공백이 있지만 특정 문제에서 공백을 제거하는 가장 좋은 방법은 regexprep
과 같이 regular expressions을 사용하는 것입니다. 정규식은 큰 문자열 내의 특정 패턴/하위 문자열을 검색하는 데 사용됩니다. 이 경우, 우리가 찾고자하는 것은 둘 이상의 공백으로 구성된 하위 문자열입니다. regexprep
은 패턴과 일치하는 하위 문자열을 찾아 다른 문자열로 바꿉니다. 우리의 경우 적어도 하나 이상의 공백 문자를 포함하는 문자열 내의 하위 문자열을 검색하고 단일 공백 문자로 바꿉니다. 또한 문자열의 앞뒤 공백을 모두 strtrim
을 사용하여 다듬 었음을 알았습니다. 이제, 당신이해야 할 모든과 같이 호출 regexprep
입니다 :
Word = regexprep(Word, '\s+', ' ');
\s+
는 적어도 하나의 공백 문자을 찾기위한 정규 표현식입니다. 그런 다음 이것을 하나의 공백으로 대체합니다. 따라서, 우리는이 문자열이 Word
에 저장했다 치죠 :
Word = ' hello how are you ';
가 선행 및 후행 공백을, 우리는 이렇게 이야기하는 방식에 regexprep
를 호출 트림을하는 제공 : 당신이 할 수
Word = strtrim(Word);
Word = regexprep(Word, '\s+', ' ')
Word =
hello how are you
앞뒤 공백은 strtrim
으로 제거되었고 정규 표현식은 나머지 공백을 처리합니다. 당신은 루프를 사용하여 죽은 세트가있는 경우
그러나, 당신이 할 수있는 일은 우리가 공백을 감지 할 때 true
로 설정되어 logical
변수를 사용하고, 우리는이 변수를 사용하고 흰색 기타 건너 뛰기 공백 문자 까지 공백이 아닌 문자가 나타납니다. 그런 다음 공간을 배치 한 다음 /
, 그 다음 공백을 입력 한 다음 계속합니다.
Word = strtrim(Word); %// Remove leading and trailing whitespace
space_hit = false; %// Initialize space encountered flag
Word_noSpace = []; %// Will store our new string
for index=1:length(Word) %// For each character in our word
if Word(index) == ' ' %// If we hit a space
if space_hit %// Check to see if we have already hit a space
continue; %// Continue if we have
else
Word_noSpace = [Word_noSpace ' ']; %// If not, add a space, then set the flag
space_hit = true;
end
else
space_hit = false; %// When we finally hit a non-space, set back to false
Word_noSpace = [Word_noSpace Word(index)]; %// Keep appending characters
end
end
Word = Word_noSpace; %// Replace to make compatible with the rest of your code
for Character = Word %// Your code begins here
...
...
무엇 위의 코드가하는 일은 우리가 별도의 공간과 우리의 단어를 포함 Word_noSpace
라는 빈 문자열을 가지고 있고, 그 공간은 하나의 공백으로 대체한다는 것입니다 : 즉,이 같은 뭔가. 루프는 각 문자를 통과하고 공간을 만나면 이미 공간이 있는지 확인합니다. 우리가 가지고 있다면, 그냥 계속 반복하십시오. 아직 없으면 공백을 연결하십시오. 마침내 공백이 아닌 문자가 나오면 공백이 아닌 문자를이 새 문자열에 추가하기 만하면됩니다. 결과는 여분의 공백이없는 문자열이되고 그 공백은 단일 공백으로 대체됩니다.
당신이 선두를 손질 한 후 위의 코드를 실행하므로 후행 공백을 제공합니다
는
Word =
hello how are you
[이 예 번역기 (http://morsecode.scphillips.com/jtranslator.html)는 형식을 보인다 당신이 원하는 것과 같은 방법으로 모스. – horchler