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

Teilstrings in einem String suchen

 

enes285
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2013, 17:52     Titel: Teilstrings in einem String suchen
  Antworten mit Zitat      
Hallo zusammen,

Ich habe 2 Fragen und hoffe sehr auf eure Hilfe.

Erste Frage:

wie könnte ich in dem String 'DASensor_S01_Obj_Obj1_dtct' abfragen, dass 'S01' und 'dtct' gleichzeitig in dem oben genannten String enthalten ist? Wenn das der Fall ist, hätte ich gerne eine 1 als Ausgabewert.

Zweite Frage:

Ich habe von den oben genannten Strings ungefähr 40 Stück.

DASensor_S01_Obj_Obj1_dtct
DASensor_S01_Obj_Obj2_dtct
DASensor_S01_Obj_Obj3_dtct
.
.
.
DASensor_S01_Obj_Obj40_dtct

Gibts es vllt die Möglichkeit, dass ich die Abfrage in der ersten Frage in einer for-Schleife durchführe?

Danke im Voraus für hilfreiche Antworten

Grüße, enes
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 23.10.2013, 17:59     Titel:
  Antworten mit Zitat      
hallo enes285,
Wie liegen deine Strangs denn vor? In einem Cell array?

Gibt sicherlich bessere Methoden, aber ich würde das so in der art machen:

Code:

if strfind(VariableMitString,'S01') && strfind(VariableMitString,'dtct')
% Beide Strangs enthalten
else
% Nicht enthalten
end
 


Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.10.2013, 18:09     Titel:
  Antworten mit Zitat      
Hallo

Die Zweite Frage ist nicht klar, ist das dann eine Cell mit Strings?

zu Frage1:
so z.B:
Code:

Sensor ='DASensor_S01_Obj_Obj1_dtct'

~isempty(regexp(Sensor ,'.*S01.*dtct*.'))

% oder STRFIND
~isempty( strfind(Sensor, 'S01'))  &&  ~isempty(strfind(Sensor, 'dtct'))
 


zu Frage 2, wenn das eine Cell, könnte man das so lösen


Code:

Sensor ={'DASensor_S01_Obj_Obj1_dtct';'DASensor_S02_Obj_Obj2_dtct'; 'DASensor_S01_Obj_Obj2_dtct';
'DASensor_S01_Obj_Obj3_dtct' }
 
pos=  regexp(Sensor ,'.*S01.*dtct*.');
pos =~cellfun('isempty', pos);
Sensor(pos)
 



Edit: Kascho aufpassen STRFIND liefert leeres Array, wenn keine Überstimmung gefunden wird => deswegen kann das in IF zu einem Fehler führen besonders bei Verknüpfungen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 23.10.2013, 18:34     Titel:
  Antworten mit Zitat      
Korrekt Denny, sorry, habe solche Sachen bei mir sonst auch mit ~isempty gelöst. Hatte ich vorhin nicht dran gedacht, danke fürs verbessern! Smile

die regexp Sache sieht interessant aus. Ist das besser als die kombinierte if Anweisung (bis darauf, das es kürzer ist)?

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
enes285
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2013, 18:50     Titel:
  Antworten mit Zitat      
Danke für die Antworten,

genau, meine Strings liegen in nem Cell-Array.

Sorry für die Unklarheit.
Zu der 2ten fragen nochmal:

Beispielsweise möchte ich gerne in der ersten schleife in einem String abfragen ob 'SO1' und 'Obj1' enthalten sind. Und in der nächsten schleife die Zahl 1 neben dem Obj durch 2 ersetzen und auch die gleiche Abfrage durchführen.

Ich hoffe, dass es jetzt verständlicher ist.

Gruß, enes
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.10.2013, 19:07     Titel:
  Antworten mit Zitat      
enes285 hat Folgendes geschrieben:
Danke für die Antworten,

Beispielsweise möchte ich gerne in der ersten schleife in einem String abfragen ob 'SO1' und 'Obj1' enthalten sind. Und in der nächsten schleife die Zahl 1 neben dem Obj durch 2 ersetzen und auch die gleiche Abfrage durchführen.


Hier meinst du doch die Schleifendurchläufe, oder?

Code:

Sensor ={'DASensor_S01_Obj_Obj1_dtct';'DASensor_S02_Obj_Obj2_dtct'; 'DASensor_S01_Obj_Obj2_dtct';
'DASensor_S01_Obj_Obj3_dtct' };
 
ObjNumber = 40;


for k=1:ObjNumber
   token = sprintf('.*S01.*Obj%d.*dtct*.', k);
   pos =  regexp(Sensor ,  token );
   pos = ~cellfun('isempty', pos);

   if any(pos)
       display(Sensor(pos) )
   else
       display('kein Name gefunden' )
   end
end


 



@ Kascho: REGEXP ist sehr mächtig. Stichwort Reguläre Ausdrücke.
Man kann sich sehr komplexe Filter zusammenbauen, aber sehr schwierig in Umgang.
Private Nachricht senden Benutzer-Profile anzeigen
 
enes285
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 23.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2013, 19:52     Titel:
  Antworten mit Zitat      
Vielen Dank für hilfreiche Antwort:)
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 - 2025 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.