2015-05-25 138 views
1

我想修改此代碼,以便如果此函數的輸入包含字母'Z',它將返回一個空矢量。如果字母在字符串的開頭,我可以對字母'Q'或'Z'進行這種操作,但不幸的是,如果這兩個字母中的任何一個都在末尾,它就不起作用。用空矢量替換字符串

function d = change(a) 
new_claim = regexprep(a, 'A', '2'); 
new_claim1 = regexprep(new_claim, 'B', '2'); 
new_claim2 = regexprep(new_claim1, 'C', '2'); 
new_claim3 = regexprep(new_claim2, 'D', '3'); 
new_claim4 = regexprep(new_claim3, 'E', '3'); 
new_claim5 = regexprep(new_claim4, 'F', '3'); 
new_claim6 = regexprep(new_claim5, 'G', '4'); 
new_claim7 = regexprep(new_claim6, 'H', '4'); 
new_claim8 = regexprep(new_claim7, 'I', '4'); 
new_claim9 = regexprep(new_claim8, 'J', '5'); 
new_claim10 = regexprep(new_claim9, 'K', '5'); 
new_claim11 = regexprep(new_claim10, 'L', '5'); 
new_claim12 = regexprep(new_claim11, 'M', '6'); 
new_claim13 = regexprep(new_claim12, 'N', '6'); 
new_claim14 = regexprep(new_claim13, 'O', '6'); 
new_claim15 = regexprep(new_claim14, 'P', '7'); 
new_claim16 = regexprep(new_claim15, 'R', '7'); 
new_claim17 = regexprep(new_claim16, 'S', '7'); 
new_claim18 = regexprep(new_claim17, 'T', '8'); 
new_claim19 = regexprep(new_claim18, 'U', '8'); 
new_claim20 = regexprep(new_claim19, 'V', '8'); 
new_claim21 = regexprep(new_claim20, 'W', '9'); 
new_claim22 = regexprep(new_claim21, 'X', '9'); 
new_claim23 = regexprep(new_claim22, 'Y', '9'); 
new_claim24 = regexprep(new_claim23, '-', ' '); 
new_claim25 = regexprep(new_claim24, '(', ''); 
new_claim26 = regexprep(new_claim25, ')',''); 
d = new_claim26; 
if strfind(d,'Q') == true 
    d = []; 
elseif strfind(d,'Z') == true 
    d = []; 
else 
    return; 
end 

回答

2

如果這是你的願望,以檢查是否字符串包含字母Zz,也許把這個在你的代碼的開頭:

if ~isempty(regexp(a, '[Zz]')) 
    d = []; 
    return; 
end 

如果你也想檢查Qq,你可以這樣做:

if ~isempty(regexp(a, '[ZzQq]')) 
    d = []; 
    return; 
end 

以上使用正則表達式,看看是否有任何characte rs包含Zz(或Qq,取決於您想要的)。 regexp返回找到這些字符的索引。如果發現Zz(或Qq字符,取決於您想要的字符),則索引將爲非空,因此將檢查~isempty。如果找不到Zz(或Qq)個字符,則該字符將爲空,因此會跳過此語句。重要的是,如果我們發現Z,z(或Q,q)字符,我們立即使d爲空並且返回,以便其餘邏輯不運行。

然後,您可以繼續執行其餘的代碼。

1

你可以檢查一個字符是否在字符串中:any(d == 'Q') || any(d == 'Z')