WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zeichenkette erstellen mit 'sprintf'

 

Martinuk
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2018, 20:31     Titel: Zeichenkette erstellen mit 'sprintf'
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerne eine Zeichenkette aus den Elementen eines Cell-Arrays erstellen wobei ich zwischen diesen Elementen stehts ein '|' (=Teiler) einsetzen möchte. Das lässt sich eigentlich einfach lösen mit der Funktion 'sprintf'. Allerdings möchte ich am Ende der Zeichenkette den Teiler nicht haben.

Zur Veranschaulichung ein einfaches Bsp.

Code:

>> C = {'A', 'B', 'C'}

C =

  1×3 cell array

    'A'    'B'    'C'

>> res = sprintf('%s|', C{:})

res =

A|B|C|

>> res(1:end-1) %Man könnte es natürlich so lösen, damit wird das Letzte '|' entfernt

ans =

A|B|C
 


Ich dachte mir nur vielleicht kann man diesen Schritt gleich direkt in die 'sprintf'-Funktion integrieren.

Habt ihr eine Idee?

Danke, Martinuk
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.08.2018, 03:14     Titel: Re: Zeichenkette erstellen mit 'sprintf'
  Antworten mit Zitat      
Hallo Martinuk,

Siehe https://www.mathworks.com/matlabcen.....xchange/26077-cstr2string

Code:
C = {'A', 'B', 'C'}
S = CStr2String(C, '|', 0);

Direkt in sprintf geht das nicht. Aber so:
Code:
S = [sprintf('%s|', C{1:end-1}), C{end}]


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Martinuk
Themenstarter

Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2018, 17:49     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die beiden Vorschläge.

Der Lösungsansatz mit der internen 'sprintf'-Funktion gefällt mir eigentlich sehr gut. Einfach und logisch Smile

Gruß,
Martinuk
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2018, 19:38     Titel:
  Antworten mit Zitat      
Hallo,

Alternative: strjoin

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Martinuk
Themenstarter

Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2018, 21:46     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke, funktioniert perfekt.

Code:

C = {'A', 'B', 'C'};
>> strjoin(C, '|')

ans =

A|B|C
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.