How to ignore punctuation in a user string while scanning for words (textscan())?

3 ビュー (過去 30 日間)
It works perfectly now. thanks to oleg and lucas for ur help! if ur interested, here's how it looks like in the end:
function pushbutton1_Callback(hObject, eventdata, handles)
words = get(handles.editbox, 'string'); %scans user input string from editbox
wavdirectory = 'C:\Program Files\MATLAB\R2010b\Recordings\';
wordsstring = regexp(words, '\w+', 'match') ; %reads string only, ignores punctuation
[j, k] = size(wordsstring); %stores number of words in user input string
for m = 1:k
thisfid = [wavdirectory wordsstring{m} '.wav'];
try
[y, fs] = wavread(thisfid);
sound(y, fs);
catch
fprintf(1,'Failed to process file wave "%s" because: ', thisfid);
lasterror
end
end
  1 件のコメント
Oleg Komarov
Oleg Komarov 2011 年 9 月 1 日
How do you get the user-input? http://www.mathworks.com/matlabcentral/answers/6200-tutorial-how-to-ask-a-question-on-answers-and-get-a-fast-answer

サインインしてコメントする。

採用された回答

Lucas García
Lucas García 2011 年 9 月 1 日
This removes the specified punctuation in your word:
regexprep(word, '[-!,.?]', '')
  9 件のコメント
Oleg Komarov
Oleg Komarov 2011 年 9 月 1 日
word = {'this.-is..!a,test', 'it!!.works???-kwan-kwan'};
C = regexp(word, '\w+', 'match')
C{2}
C =
{1x4 cell} {1x4 cell}
ans =
'it' 'works' 'kwan' 'kwan'
Jan Donyada
Jan Donyada 2011 年 9 月 1 日
ah the array dimensions were slightly different. i modified the for loop so it works. thanks guys! updated code is above if ur interested

サインインしてコメントする。

その他の回答 (2 件)

Oleg Komarov
Oleg Komarov 2011 年 9 月 1 日
Use regexp.
If you want more details provide some example inputs and required output.
From Lucas' example:
word = {'this.-is..!a,test', 'it!!.works???-'};
C = regexp(word, '\w+', 'match')
  2 件のコメント
Jan Donyada
Jan Donyada 2011 年 9 月 1 日
ok i included the code within the question.
Lucas García
Lucas García 2011 年 9 月 1 日
Nice, Oleg!

サインインしてコメントする。


Walter Roberson
Walter Roberson 2011 年 9 月 1 日
Ah, the poster broke this out in to a separate question, which I did not see before I answered in the original thread. My answer there was:
Before the textscan:
words = lower(words);
words(~ismember(words, ['a':'z' ' '])) = ' ';
then go ahead with the textscan
On second look, that could be shortened to
words = lower(words);
words(~ismember(words, 'a':'z')) = ' ';

カテゴリ

Help Center および File ExchangeData Import and Export についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by