2013-09-20 1 views
1

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

Не могли бы вы проверить мой код и рассказать мне, что я делаю неправильно. Кстати, я уже проверял другие темы по этой аналогичной проблеме, но мне не разрешено использовать функцию regex или print.

phrase=('my room is cold') 
allSpaces=findstr(' ',phrase); 
k=length(allSpaces) 
acr=phrase(1:allSpaces(1):allSpaces(k)-1) 

Выход:

acr= mrms 
+0

Разве ваш выход не будет «mric'? –

+0

Да, но последняя строка моего кода неверна. –

ответ

1

Изменение последней строки в

acr = phrase([1 allSpaces+1]) 

Таким образом, вы получите первую букву, а затем первым после каждого пространства.

+0

Спасибо. Но не могли бы вы объяснить, что происходит в этой строке, я знаю, что 1 означает начать с позиции, а затем добавить 1 позицию в пробелы. почему нет точки с запятой, но между 1 и пространством есть пробел? –

+0

@ KururugiSuzaku Запятая или пробел эквивалентны: они объединяются по горизонтали. В этом случае, если 'allSpaces' является вектором 1x3, выражение' [1 allSpaces + 1] 'дает вектор 4x1. Если 'allSpaces' были вектором _column_ (например, размером 3x1), вам пришлось бы конкатенировать _vertically_, используя точку с запятой:' [1; allSpaces + 1] ', который даст вектор 4x1. –

+0

Спасибо! для объяснения, я думаю, что получаю это сейчас. : D –

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