2017-10-06 86 views
0

在刪除MATLAB字符串中的多餘空格時,是否可以忽略標點符號?我目前正在執行這個代碼:在忽略標點符號的情況下刪除MATLAB字符串中的多餘空格

str = " Hello , how are you? "; 
output = regexprep(strtrim(str), '\s+', ' '); 

但輸出是給我

"Hello , how are you?" 

而不是

"Hello, how are you?" 

如果我使用類似的字符串/字符數組,如「我能幫你嗎? ',我在問號前留出了額外的空間。我相信isspace和isletter可以通過矢量化使用,但我不確定如何嵌套函數調用。

+1

而不是「忽略」標點符號以找到更長的空格,爲什麼不只是用標點符號替換「一些空格後跟標點符號」的所有實例?你可以很容易地找到匹配的正則表達式 – Wolfie

+0

這是有道理的。我試圖這樣做,但我無法弄清楚如何去除單詞和標點符號之間的多個空格。我會研究它。 – collegesista

回答

2

爲了幫助你的榜樣和修剪標點前的空間,你可以使用:

regexprep(s, ' [,.?!]', '${strtrim($0)}') 

您可能需要在方括號中的附加標點符號擴大。

+0

偉大的答案,現在我只需要在標點符號之後的空格上工作。謝謝! – collegesista

相關問題