2012-08-22 12 views
5

Mam strukturę składającą się z komórek. Chcę usunąć wszystkie białe spacje na początku każdej komórki i na końcu i chcę zachować wszystkie białe spacje między tekstem w komórkach. Więc jeśli mamJak usunąć białe spacje na początku i na końcu w programie Matlab?

s = ' bbb b bbbb ' 

Chcę uzyskać

s = 'bbb b bbbb' 

Chcę zastosować tę metodę do nieznanej liczby komórek w tej strukturze (na przykład 2x3), być może za pomocą pętli. Czy ktoś ma pomysł, jak to zrobić? Nie udało mi się z regexp.

+0

teraz mam prosty jeszcze użytecznej odpowiedzi: strtrim (s)! Jak mogę zastosować go dla każdej komórki? – berndh

Odpowiedz

5

Można użyć strtrim() w połączeniu z structfun() i indeksowanie komórek:

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

Działa to tylko, jeśli użytkownik UCT ma układ podobny

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

Jeśli ma inną strukturę, powiedzmy,

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

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

... 

można spróbować

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

Mam komórkę, powiedzmy 10x2. każda komórka zawiera ciąg znaków z białymi odstępami na początku, środku i końcu, a na początku chcesz je usunąć. więc to jest jak ** my_cell {1,1} = 'name1' ** ** my_cell {1,2} = 'string1' ** ** my_cell {2,1} = 'new name2' ** itd. Co by było być najprostszym rozwiązaniem, które by to zrobiło? Twój nie udało mi się niestety niestety zastosować. – berndh

+0

@ user1578163 Co otrzymujesz, gdy zastosujesz moje rozwiązanie? Czy daje błąd? Czy mógłbyś ewentualnie edytować swoje pytanie, dodając minimalną działającą wersję twojej struktury + komórki? –

+0

jasne, dziękuję: mój przykład pracy to ** M = {'title1' 'my name1'; 'title2' 'my name2'} ** co otrzymuję, gdy zastosuję twoje rozwiązanie: Wejścia do STRUCTFUN muszą być strukturami skalarnymi. – berndh

0

Jeśli matryca jest nazywany, zrobić:

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

i jak mogę efektywnie zastosować to dla każdej komórki? Ponieważ pisanie tej funkcji na samym końcu nie usuwa. – berndh

+0

co masz na myśli przez każdą komórkę? – tomelse

+0

czy macie matrycę? – tomelse

0

Jeśli A to struktura zawierająca komórki, to można zrobić:

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

strtrim nie sprecyzowane zająć końca ciąg dla mnie, więc używam deblank

więc jeśli strtrim nie robić wszystko, czego chcieliśmy, można użyć to w połączeniu z deblank, aby dostać to, co chcesz.

Powiązane problemy