2014-09-19 330 views
0

o我是一個神經科學/生物醫學工程專業,目前正在上MATLAB課程。我有一個hw程序,我遇到了問題。我非常接近解決它。基本上我必須採用像「woot我愛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 2014-09-19 04:08:50

+0

@Divakar從技術上講,我的一個測試用例是「我喜歡matlab」,我不得不去猜測它。換句話說,我需要說出'wtILvMtlb'。我需要將空格後的字母大寫,但是當我拔出空格時,它停止工作。 – 2014-09-19 11:29:52

+0

@Divakar這可能需要很長的一系列步驟。 'ILvMtlb'是最終的輸出 – 2014-09-19 12:56:07

回答

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的未定義輸入。不太清楚爲什麼。 – 2014-09-19 11:31:08

+0

對不起 - 我有一個錯誤(現在已修復) - 我認爲有一個名爲'regexprepi'的函數,但是沒有。 – Edric 2014-09-19 12:47:22

+0

這工作(主要)完全謝謝:)我只需要小寫的第一個字母。我希望能夠通過索引來做到這一點。我的一個測試案例是'我愛matlab',所以w需要小寫。由於某種原因,regexprep使其成爲大寫字母。我讚賞所有的幫助:) – 2014-09-19 13:09:22

2

使用regexprep當然有效,但它有點矯枉過正,而且無論如何你不會學習如何編程Matlab。這在一個非常乾淨和清晰的方式是「純Matlab的」可行:

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

這很好!+1 – Divakar 2014-09-19 13:02:01

+0

@Divakar:thx !. – 2014-09-19 13:07:32

+0

@ A.Donda現在我嘗試了類似的東西,但我試圖用findstr函數來做。原本我是這樣的,所以我單獨找到了字符串中的每個元音,然後將它們拉出來。我對空間做了同樣的事情,但是在空間之後大寫,然後把它拉出來,這給了我一些問題。 – 2014-09-19 13:15:07