Anfängerproblem, Char aus String und diesen dann vergleichen....

V

Vorthos

Neues Mitglied
Thread Starter
Dabei seit
28.12.2011
Beiträge
9
Reaktionspunkte
0
Hallo, habe gerade mit dem Programmieren angefangen, und habe ein Problem, ich möchte letztendlich einen String in verschiedene Unterstrings aufteilen und zwar immer dort, wo im String ein + vorkommt.

Doch leider sträubt sich xCode gegen alle möglichen Versuche meinerseits...

Hier ein paar Versuche:

gesamtString = txtLeft.stringValue;
for (int i = 0; i< (NSStringEnumerationByComposedCharacterSequences); i++){
const char *gesamtChar = [gesamtString UTF8String];
teilChar = index(gesamtChar, i) ;
if (index(gesamtChar, i) =="+")

...

das war mein mehr oder weniger erster Versuch, was das mit dem UTF8 soll weil ich allerdings nicht so recht, das hab ich im inet gefunden -_-

Aber dabei sagt mir xCode ich soll strComp verwenden:

gesamtString = txtLeft.stringValue;
for (int i = 0; i< (NSStringEnumerationByComposedCharacterSequences); i++){
const char *gesamtChar = [gesamtString UTF8String];
teilChar = index(gesamtChar, i) ;
if (strcmp(teilChar, "+"))

da bekomm ich dann zumindest schonmal keine Fehlermeldung, allerdings terminiert mein Programm bei Breakpoint sowieso bei:

teilChar = index(gesamtChar, i) ;

ich hab ehrlich gesagt keine Ahnung was das Problem ist und warum das son Aufstand sein soll den Char an einer beliebigen Stelle abzufragen, hoffe ihr könnt mir helfen :)



mfg.Vorthos
 
Verstehe es zwar nicht ganz, aber vielleicht hilft Dir dies.

self.DeinTextArray = [@"textA+textB+textC" componentsSeparatedByString:mad:"+"];

Da wird der Text anhand des Seperators "+" zerlegt und in ein Array gespeichert. Kannste dann ja entsprechend auslesen.

Muesste so stimmen, bin unterwegs und tippe aufm iPad.

Andi
 
  • Gefällt mir
Reaktionen: below
Hey danke, werde das morgen gleich mal austesten, das ist genau das, was ich gebraucht habe( sollte es so funktionieren, wie ich es mir erhoffe^^)


Aber ich werde auch noch weiter mit den Strangs verfahren müssen, wäre super, wenn mir noch wer sagen könnte, wie ich beispielsweise sowas mache:

StringA="Hallo"

if ((index StringA, 2) ==l )

then: blablub:

Das klappt ja iwie nicht, so wie ich es im ersten Post versucht hab^^

weil auch wenn deine Funktion super für die Aufteilung ist, bräuchte ich halt schon noch ne grundlegende Funktion, um einfach auf chars an einer bestimmten Stelle in einem String zugreifen zu können und diese halt auch vergleichen zu können :D



mfg
 
So, habe das jetzt alles soweit ibdas beurteilen kann hinbekommen, aber ich peider tut mein Code noch nicht so ganz, was ich will ^^

bei visual basic(oder so ähnlich) gab es die funktion, dass
Man Schritt für Schritt den Code während der Laufzeit durchgehen konnte und sich immer angucken konnte, welche variable grade welhen wert hat und wie der Code halt eben arbeitet.

Daher meine Frage, gibt es diese Funktion bei XCode auch, und wenn ja, wo?


Mfg Vorthos
 
XCode kenne ich leider nicht.

Aber für Xcode hier ein Hinweis auf die Dokumentation: Debugging and Analyzing your Code.

Eine leichter verdauliche Einführung ins Debugging findet sich aber in vielen Büchern zum Thema

Alex
 
Okay, hier meine nächste Fraqe:

Da ich es nicht hinkriege, zur Laufzeit ein Charakterset herzustellen und es auch schwierig schein einen Char in ein NSString zu verwandeln, hab ich mir selbst eine Funktion geschrieben, die mir sagen soll, ob der Char in einem String vorkommt:

- (BOOL)findChar:(int)r:(char)c {


charIsThere = FALSE;
for (int j = 0; j<1; j++) {

if ([aTeile [r] characterAtIndex:j] == c) {
charIsThere =TRUE;
}


}
return charIsThere;

}



so, das ist jetzt erstmal nur für den die erste stelle, später würde ich das dann mit string length machen, aber egal:

Wenn ich die Funktion jetzt als Test hiermit aufrufe:


- (IBAction)btnTest:(id)sender { //testbutton



if ([self findChar:1 :'a'] ==TRUE) {
lblFaktoren.stringValue= @"gefunden";
}
else {
lblFaktoren.stringValue= @"NOT";
}

}



kommt als Antwort immer nur : "NOT" heraus, und wenn ich mehrmals drücke mit anderen Zeichen (aber im selben durchlauf) kommt :

2012-01-05 19:36:55.722 Chemie 2[811:707] -[__NSCFConstantString characterAtIndex:]: Range or index out of bounds

(und noch zig Zeilen mehr)


Kann mir wer sagen, wo der Fehler liegt?^^
 
Kann mir wer sagen, wo der Fehler liegt?^^

Ja. Du liest nicht genug Dokumentation.

Okay, hier meine nächste Fraqe:

Da ich es nicht hinkriege, zur Laufzeit ein Charakterset herzustellen
Warum nicht?
und es auch schwierig schein einen Char in ein NSString zu verwandeln
Code:
char c = 'x';
NSString *charString = [NSString stringWithFormat:@"%c", c];


hab ich mir selbst eine Funktion geschrieben, die mir sagen soll, ob der Char in einem String vorkommt:
Was genau ist Deine Anforderung? Ob EIN Buchstabe in dem String vorkommt, oder Buchstaben aus einer Menge?


Code:
if ([aTeile [r] characterAtIndex:j] == c) {
Was genau ist "aTeile"? Ist das [r] richtig?

Alex
 
Hey, sry, hatte leider in letzter Zeit wenig von ebendieser^^


Ja, das stimmt wahrscheinlich, aber ich geb mir Mühe :)

Aber danke, jetzt hab ich das wenigstens mit dem Char to String Problem hinbekommen und hab durch googeln jetzt meine Funktion zum Laufen gebracht ;)

Aber leider hab ich nun folgendes Problem:

Die Funktion ansich funktionier tadellos und sagt mir nun immer, ob in einem String der Char X vorhanden ist, das Problem ist nun folgendes:

Ich hab meinen String Array aTeile [] und dieser wird mittels:

aTeile []= txtField.stringvalue

befüllt.

Solange ich in dem Feld nur einen Buchstaben stehen habe funktioniert das wunderbar, sobald ich aber 2 oder mehr benutze, bekomme ich aber eine Bad_Access Fehlermeldung...

Habe das dann weiter eingegrenzt und bin wie gesagt dazu gekommen, dass es am "befüllen" meines Arrays liegt. Lege ich anderweitig z.B

aTeile [0] = @"abc";

fest, geht alles, aber sobald ich über den stringvalue gehe, kommt da nur Mist bei rum...


So habe ich aTeile in der h-Datei initialisiert :

NSString * aTeile [30];

So befühle ich es in der m-Datei:

aTeile [anzahlTeile] = atomInput.stringValue;


Ich nehme auch (vorerst) gerne auch nur einen Link zur passenden Dokumentation an, ich will es ja schließlich lernen ^^


Danke auf jeden Fall schonmal ;)


mfg.Vorthos
 
Lernst Du mit einem Buch oder nach dem Prinzip "Trial and Error"?
 
Natürlich geht das nicht weil .... wie war das mit Dokumentation lesen?

Warum in aller Welt benutzt Du ein C-Array ("[]")? Nimm doch ein NSMutableArray, und Deine Probleme sind behoben.

Deine Kommentare deuten darauf hin, dass Du kein ARC verwendest, und dann musst Du Dich um das Memory Handling selber kümmern. Dinger wie @"foo" sind statisch, die stehen einfach im __text Segment, da ist es egal. Alles andere sind dynamische Objekte.

=> Nimm einen NSMutableArray. Ich gehe davon aus, dass dann Deine Probleme behoben sind. Und lies mehr Dokumentation

Alex
 
Ich lese ein Buch, im Moment habe ich aber entschlossen, dass ein bisschen Trial and Error nicht schaden kann :D


mfg
 
Ich lese ein Buch, im Moment habe ich aber entschlossen, dass ein bisschen Trial and Error nicht schaden kann :D

Fair enough, aber mal ganz freundlich gefragt: Müssen wir da mitmachen? Ich beantworte lieber Fragen, bei denen jemand nicht im dunklen stochert.

Alex
 
  • Gefällt mir
Reaktionen: _ebm_
Zurück
Oben Unten