2014-09-19 5 views
1

Je déteste poser cette question, mais je suis si proche de comprendre et cela me dérange vraiment. Je dois changer mes ficelles en camelcase. Je me suis débarrassé des espaces, je peux mettre en majuscules les lettres correctes et je peux supprimer les voyelles, mais je dois garder la toute première lettre du code et je n'arrive pas à l'obtenir. J'ai essayé de l'indexer de six manières différentes, en vain.Garder la première voyelle, tout en supprimant le reste 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; 

« un poisson deux poissons bleu poissons de poisson rouge » devrait se transformer en « onFshTwFshRdFshBlFsh ». J'ai travaillé dessus pendant au moins deux heures. J'ai essayé d'indexer le premier mot à l'intérieur où se trouve le 'aeiou', mais cela ne semble pas fonctionner.

+0

Donc, comme FirstWord (2: fin)? –

Répondre

1

J'espère que cela ne vous dérange pas que j'ai créé une variable supplémentaire. Est-ce ce que vous cherchez?

firstWord = 'one fish two fish red fish blue fish' 
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 == ' ') = []; 
Li = ismember(firstWord, 'aeiou'); 
Li(find(Li,1,'first'))=0; 
firstWord(Li) = []; 
cameltoe = firstWord 

Edit: si vous voulez garder la première lettre, quelle que soit d'être une voyelle:

indexing = find(firstWord(1:end - 1) == ' '); 
firstWord(indexing + 1) = upper(firstWord(indexing + 1)); 
firstWord(firstWord == ' ') = []; 
firstWord([false ismember(firstWord(2:end), 'aeiou')]) = []; 
cameltoe = firstWord; 
+0

.... oui. J'aime t'aimer pour ça. J'ai essayé de le faire, mais je suppose que j'ai fait quelque chose de bizarre. Ça a été comme le fléau de mon existence, c'est comme un énorme soulagement. Je suis juste curieux de savoir "première" fonctionne. J'essayais de l'indexer directement. Sauf que maintenant ça gâche mon premier cas de test:/'woot j'aime matlab' doit être 'wtILvMtlb' et il y a un o maintenant –

+0

''first'' fait partie de la fonction' find': 'find ( , k, 'first') 'donne les premiers éléments' k' qui sont vrais dans le logique. –

+0

Dans la question, il est dit que vous voulez la première voyelle? Voulez-vous seulement la première lettre? Cela rend la vie beaucoup plus facile –

Questions connexes