2012-08-22 23 views
5

Ich habe eine Struktur aus Zellen. Ich möchte alle weißen Leerzeichen am Anfang jeder Zelle und am Ende entfernen, und ich möchte alle Leerstellen zwischen Text in den Zellen beibehalten. Also, wenn ichWie entfernen Sie Leerzeichen am Anfang und am Ende in Matlab?

s = ' bbb b bbbb ' 

habe ich

s = 'bbb b bbbb' 

erhalten wollen mag ich diese Methode zu einer unbekannten Anzahl von Zellen in dieser Struktur anzuwenden (zB 2x3), vielleicht mit einer Schleife. Hat jemand eine Idee, wie es geht? Ich scheiterte mit regexp.

+0

jetzt habe ich eine einfache, aber nützliche Antwort: strtrim (s)! Wie kann ich es für jede Zelle anwenden? – berndh

Antwort

5

Sie können strtrim() in Kombination verwenden, um mit structfun() und Zellenindexierung:

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

Dies funktioniert nur, wenn Ihre str uct hat ein Layout wie

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

Wenn es eine andere Struktur hat, sagen wir,

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

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

... 

Sie

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

Ich habe eine Zelle, sagen wir 10x2. Jede Zelle enthält eine Zeichenkette mit Leerzeichen am Anfang, in der Mitte und am Ende, die alle am Anfang entfernt werden sollen. also ist es wie ** meine_zelle {1,1} = 'name1' ** ** meine_zelle {1,2} = 'string1' ** ** meine_zelle {2,1} = 'neuer name2' ** usw. Was würde die einfachste Lösung sein, die das tun würde? Ihre, die ich leider nicht anwenden konnte. – berndh

+0

@ user1578163 Was bekommen Sie, wenn Sie meine Lösung anwenden? Gibt es einen Fehler? Könnten Sie vielleicht Ihre Frage so bearbeiten, dass sie eine minimal funktionierende Version Ihrer Struktur + Zelle enthält? –

+0

sicher, danke: mein Arbeitsbeispiel ist ** M = {'title1' 'mein Name1'; 'title2' 'mein Name2'} ** was ich bekomme, wenn ich Ihre Lösung anwende: Eingaben an STRUCTFUN müssen skalare Strukturen sein. – berndh

0

Wenn Ihre Matrix ein genannt wird, tun:

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

und wie kann ich dies für jede Zelle effizient anwenden? Weil das Schreiben dieser Funktion am Ende nicht entfernt wird. – berndh

+0

was meinst du mit jeder Zelle? – tomelse

+0

hast du eine Matrix? – tomelse

0

Wenn A Ihre Struktur ist, die Zellen enthält, dann könnten Sie tun:

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

strtrim nehmen nicht alle Tage Pflege der des Endes nicht versuchen könnte, String für mich, also verwende ich deblank

also, wenn strtrim nicht alles getan hat, was Sie wollten, können Sie verwenden das in Verbindung mit deblank, um zu bekommen, was Sie wollen.

Verwandte Themen