2012-08-22 64 views
5

我有一個由單元組成的結構。我想刪除每個單元格開頭的所有空格,並且最後要保留單元格中文本之間的所有空格。所以,如果我有如何刪除matlab開頭和結尾的空格?

s = ' bbb b bbbb ' 

我想獲得

s = 'bbb b bbbb' 

我想這個方法適用於未知數量的細胞在這個結構(例如2×3),可能使用一個循環。有沒有人有一個想法如何做到這一點?我失敗了regexp

+0

現在我得到了一個簡單而有用的答案:strtrim(s)!我如何將它應用於每個單元格? – berndh

回答

5

您可以結合使用strtrim()structfun()和cell-indexing:

your_struct = structfun(@(x) strtrim(x{1}), your_struct); 

這隻適用於你的str UCT有一個像

your_struct.a = {' some string '}; 
your_struct.b = {' some other string '}; 
... 

如果它有不同的結構,比如佈局,

your_struct.a = { {' some string '} 
        {' some other string '}}; 

your_struct.b = { {' again, some string '} 
        {' again, some other string '}}; 

... 

你可以嘗試

your_struct = structfun(@(x) ... 
    cellfun(@strtrim, x, 'uni', false), ... 
    your_struct, 'uni', false); 
+0

我有一個單元可以說10x2。每個單元格在開始,中間和結尾都包含一個帶有空格的字符串,在開始時想要除去這些內容。所以它就像** my_cell {1,1} ='name1'** ** my_cell {1,2} ='string1'** ** my_cell {2,1} ='new name2'**等等成爲最簡單的解決方案嗎?你的我沒有設法申請不幸.. – berndh

+0

@ user1578163當你申請我的解決方案時,你會得到什麼?它會給出錯誤嗎?你能否編輯你的問題來包含你的結構+單元格的最小工作版本? –

+0

當然,謝謝:我的工作示例是** M = {'title1''my name1'; 'title2''my name2'} **當我應用您的解決方案時得到的結果:STRUCTFUN的輸入必須是標量結構。 – berndh

0

如果你的矩陣被稱爲,做:

newmatrix = cellfun(@strtrim, a, 'UniformOutput', false) 
+0

以及如何有效地爲每個單元應用此功能?因爲在最後寫這個函數不會刪除。 – berndh

+0

你是什麼意思每個細胞? – tomelse

+0

你有矩陣嗎? – tomelse

0

如果A是含有細胞的結構,那麼你可以做:

New_A=structfun(@strtrim,A,'UniformOutput',false) 
0

strtrim不必總是採取的結束護理字符串爲我,所以我用deblank

所以如果strtrim沒有做你想要的一切,你可以使用與deblank一起獲得你想要的東西。

相關問題