2014-09-19 8 views
0

o Я - специалист по неврологии/биомедицинской инженерии, который в настоящее время занимает класс в программировании MATLAB. У меня есть hw-программа, с которой я столкнулся. Я очень близок к тому, чтобы понять это. В основном я должен принять фразу типа «woot I love matlab» и выйти из «wtILvMtlb». Я удалил пробелы, и я удалил гласные, но я не могу заставить его заглавные буквы после Когда я пытаюсь, второй я вывожу пробелы, он немного сумасшедший. Я технически также не изучил функцию regexprep, но, поскольку я нашел это, я решил, что могу использовать его. т уход. Она, наверное, хочет, чтобы сделать некоторые индексации вещи, чтобы получить наш результат, но если regexprep работает, я буду считать, что.Заглавные буквы, следующие за пробелом в MATLAB, затем удаление пространства

function[cameltoe] = abbreviatingCamelCase(firstWord) 

indexing = find(firstWord(1:end - 1) == ' ');%I want to find all the spaces here 
firstWord(indexing + 1) = upper(firstWord(indexing + 1)); %I want to uppercase all the words following a space 
firstWord(firstWord == ' ') = []; 
firstWord(ismember(firstWord, ' aeiou')) = []; 
cameltoe = firstWord; 

нужно преобразовать «одна рыба две рыбы три рыбы» в ' onFshTwFsh '. Я близок, но не совсем там. Это моя последняя проблема. Мой код выдает первый o. Индексация, похоже, не работает. Я пытался индексировать ее, как шесть разных способов.

+0

Так 'firstWord =«Я люблю MATLAB „и выйти“ ILvMtlb'' Это не работает с MATLAB Кроме того,?. Каков ожидаемый результат? – Divakar

+0

@Divakar Технически один из моих тестовых примеров - «woot I love matlab», и я должен его спрятать. Другими словами, мне нужно заставить его сказать «wtILvMtlb». Мне нужно загладить буквы после пробела, но когда я вытаскиваю пробелы, он перестает работать. –

+0

@Divakar Это возможно в длинной серии шагов. «ILvMtlb» - это конечный результат –

ответ

1

Вы можете сделать это с помощью пары звонков REGEXPREP.

>> str = 'i love matlab' 
str = 
i love matlab 
>> cap = regexprep(str, '(?<=(^|))(.)', '${upper($1)}') 
cap = 
I Love Matlab 
>> result = regexprep(cap, '[aeiou ]', '') 
result = 
ILvMtlb 

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

Второй REGEXPREP просто использует группу символов, чтобы заменить гласные и пробелы ничем. В зависимости от того, хотите ли вы также удалить заглавные гласные, вам может понадобиться использовать [aeiouAEIOU ] в качестве группы символов.

+0

Спасибо, но когда я пытаюсь найти последний, он меня фальсифицирует. В нем указывается неопределенный ввод аргумента char. Не слишком уверен, почему. –

+0

Извините, у меня была ошибка (теперь исправлена). Я думал, что существует функция 'regexprepi', но ее нет. – Edric

+0

Это работает (в основном) отлично спасибо :) Мне просто нужно оформить первую букву. Надеюсь, я смогу сделать это с индексированием. Один из моих тестов - «woot I love matlab», поэтому w должен быть строчным. По некоторым причинам, выражение regexprep является прописным. Я ценю всю помощь, хотя :) –

2

Использование regexprep, конечно, работает, но это немного перебор, и так или иначе, вы не узнаете, как программировать Matlab. Это выполнимо в «чистом Matlab» в очень чистой и ясно:

ind = find(firstWord(1 : end - 1) == ' '); 
firstWord(ind + 1) = upper(firstWord(ind + 1)); 
firstWord(ismember(firstWord, ' aeiou')) = [] 
+0

Это хорошо! +1 – Divakar

+0

@Divakar: thx !. –

+0

@ A.Donda Теперь я пробовал что-то подобное, но я пытался это сделать, используя функцию findstr. Первоначально у меня было так, что я нашел каждый из гласных в строке в отдельности, а затем вытащил их. Я делал то же самое для пробелов, но он извлекал выгоду из пространства, а затем вытаскивал его, что давало мне проблемы. –