フィルターのクリア

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

1 回表示 (過去 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 ExchangeText Data Preparation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by