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

Zahl zwischen zwei Strings suchen

 

power_paul
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2012, 10:57     Titel: Zahl zwischen zwei Strings suchen
  Antworten mit Zitat      
Hallo zusammen,

ich habe mal wieder eine Frage und wurde durch die Suche leider nicht fündig.
Ich habe eine cellarray und möchte in diesem gerne Zahlen finden. Das Problem ist, dass die Zahlen zwischen zwei Strings stehen.
Zum Beispiel: String1 Zahl String2. String1 und 2 können aber auch einzeln vorkommen. Bei der Zahl handelt es sich um ein- oder zweistellige Integer.
Welche Funktion könnte ich hierfür nutzen? Ich dachte an regexp?!

Danke für die Hilfe.

Gruß Paul
Private Nachricht senden Benutzer-Profile anzeigen


Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2012, 11:27     Titel:
  Antworten mit Zitat      
Hallo Paul,
ich hab noch ein Verständnis-Problem mit deinen Angaben, deshalb ergeben sich zwei Möglichkeiten:
1. In einer Zelle steht entweder ein string oder eine Zahl
dann ist die Länge der Zelle unterschiedlich: Zahl == 1Element; String == mindestens 2 Elemente (char + NULL)
2. In einer Zelle steht ein String, der eine Zahl enthält, die aber ein subsring ist
dann hat du wieder zwei Möglichkeiten:
a) Die Zahl und der string sind durch ein Leerzeichen voneinander getrennt --> suche im String die ascii-Nummer 32 und du hast die Elementgrenzen
b) Die Zahl folgt direkt auf ein Zeichen
dann musst du im String nach Zeichen suchen deren ascii-Nummer kleiner als 58 und größer als 47 sind

Die Routine am Ende ist dann einfach nur eine Schleife mit ein paar Bedingungen

Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
power_paul
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 03:30     Titel:
  Antworten mit Zitat      
Hi Kevin,

danke für deine Antwort.
Ich denke es trifft die von dir beschriebene Variante 2a am ehesten, aber ich glaube noch nicht ganz. Ich versuche es anders zu beschreiben. Ich habe einen String (Beispiel: "......Wert1 = 6 Wert2 = 8......"). Ich suche jetzt die 6 in dem String. Aber genau an der Stelle, an der auf "Wert1" "Wert2" folgt. Das Problem ist, dass Wert1 und Wert2 auch an anderen Stellen im String vorkommen können (Beispiel: "......Wert1 = 6 WertX = 9......"). Dann interessiert mich die 6 nicht.
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: 09.03.2012, 10:28     Titel:
  Antworten mit Zitat      
Hallo power_paul,

Kannst Du bitte ein Beispiel in Matlab-Syntax angeben? dann könnten wir unsere Vorschläge auch selbst ausprobieren. Etwa:
Code:
C = {'asd16 bgs', 'ein und zwei 12 und drei'}

Konkrete Beispiele sind immer (oft?) einfacher zu verstehen als eine Beschreibung also Text.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 11:59     Titel:
  Antworten mit Zitat      
Hallo Paul,
du hast jetzt nur eine zweite Bedingung drin --> wert1 und wert2 sind substrings und nur zwischen denen kann der gewünschte Wert stehen. Die Frage bei der Umsetzung ist nur ob es mehr wahre oder falsche Bedingungen für den Substring gibt, damit die runtime im Rahmen bleibt.
Aber ich finde Jan hat recht...der Fall ist sehr speziell. Kannst du mal die Datei, um die es geht Posten? Oder noch besser den Dateiaufbau.

Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
power_paul
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 05:21     Titel:
  Antworten mit Zitat      
Hi,

also in der Datei siehts an der betreffenden Stelle so aus:

Match Num = 6
UserID = 7(Score=100)
UserID = 2(Score=92)
UserID = 3(Score=91)
UserID = 5(Score=91)
UserID = 6(Score=90)
UserID = 4(Score=84)

ich möchte jetzt gerne die Zahl 6 einlesen. Die steht wie gesagt zwischen "Match Num =" und "User ID". Die beiden Strings könne jedoch auch einzeln an anderer Stelle in der Datei. Aber an dieser Stelle möchte die 6 haben.
Ich habe es jetzt so gelöst, dass ich mit regexp nach "Match Num =" suche und dann gucke, ob maximal 5 Stellen später ein "U" vorkommt. Ist aber glaube ich nicht ganz sicher.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 17:43     Titel:
  Antworten mit Zitat      
Hallo,
die Möglichkeit geht, allerdings versteh ich nicht, warum du die Bedingung über die Anzahl der Zeichen setzt, und nicht einfach guckst ob der erste token in der Nächsten Zeile "UserID" ist. Dann wäre es sicher.

Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
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.