3 fragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo Leute!

    Ich hab jetzt mal 3 Fragen die ich mir mithilfe der Foundation nicht beantworten konnte und zwar sind das:

    1) Ich mˆchte aus einem NSString an einer bestimmten Stelle einen charakter auslesen (und dann nach integer oder boolean umwandeln).
    Da gibts ja eine Funktion, aber die gibt mir einen unichar zur¸ck. damit kann ich leider nix anfangen (weis nicht wie)

    2) Ich mˆchte einen String nach bestimmten Charakters durchsuchen lassen und ersetzen. zum Beispiel alle g‰nsef¸sschen durch Rufezeichen ersetzen oder so.
    Des weiteren suche ich die Mˆglichkeit aus einem String einen bestimmten teil zu lˆschen und zwar den der zwischen den kalmmern steht. Das sollte nun so aussehen:
    zuerst: Dj mark Oh (meats DJ yz).mp3
    danach: Dj mark Oh.mp3

    3) Und als letzte Frage mˆchte ich wissen wie ich Strings einfach utnereinander ausgeben kann. Also in einem Fenster zum beispiel in einer NSBox oder NSTextView oder was weis ich was. (ps das tutorial zu NSTableView hat bei mir nicht geklappt (vielleicht wegen der schlechten qualit‰t der Bilder im PDF)).

    Vielen Danke Leute!
    Ich bin nat¸rlich auch f¸r Teilantworten sehr dankbar und hoffe, dass ich dann bald mein Projekt hier vorstellen kann!
  • RE: 3 fragen

    Alles, was Du ¸ber Strings wissen willst, findest Du in der Dokumentation:
    <a href="file:///Developer/Documentation/Cocoa/TasksAndConcepts/ProgrammingTopics/Strings/index.html">file:///Developer/Documentation/Cocoa/TasksAndConcepts/ProgrammingTopics/Strings/index.html</a>

    Ein Character in einem NSString ist ein UnicodeCharacter, den bekommst Du als unichar zur¸ck, Du kannst den String allerdings auch wieder in einen C-String verwandeln und dann damit arbeiten:
    <pre>- (const char *)cString</pre>

    Ersetzten geht mit einem NSScanner (Doku)

    Zum Ausgeben setzt Du die Strings mit
    <pre>- (NSString *)stringByAppendingString:(NSString *)aString</pre> zusammen, ggf mit \n f¸r Zeilenumbr¸che und gibst Sie dann z.B. mit der setString-Methode von NSTextView aus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von snowman ()

  • RE: 3 fragen

    Zu 1:
    Ein unichar ist nichts anderes als 'unsigned short'. Ist in Cocoa so definiert:

    typedef unsigned short unichar;

    Wie Unicode codiert ist kannst Du hier nachlesen:

    unicode.org

    Die ersten 127 Zeichen sind mit ASCII identisch. Du kannst auch einen Scanner (NSScanner) benutzen:

    NSScanner *scanner = [NSScanner scannerWithString:@"DeinString"];
    [scanner setScanLocation:index];
    [scanner scanInt:&intVariable];

    ‹brigens ist die Methode -cString "deprecated" und daher nicht mehr in neuen Programmen verwendet werden. Stattdessen einfach -UTF8String verwenden.

    Zu 2:
    Zeichen ersetzen: NSMutableString-Methode -replaceOccurrencesOfString:withString:options:range:
    Teil aus String lˆschen: Entweder, wie von snowman vorgeschlagen mit NSScanner, oder mit der NSMutableString-Methode -deleteCharactersInRange:

    Zu 3:
    F¸r die Textausgabe ist NSTextView zust‰ndig. NSTextView bietet diverse Methoden zur Textmanipulation. Einfach mal in der Dokumentation nachschauen.

    Michael
  • Hallo Leute

    Danke!

    Ich hab schon gewusst, dass man das mit NSScanner machen kann, aber nicht wie. die doku hilft mir auch nicht weiter. kann niemand ein einfaches beispiel hier einf¸gen?

    wie kann ich dann einen sogenannten unichar in einen integer umwandeln?

    ausserdem mˆchte ich das ganze erledigen ohne in einen c-string umzuwandeln. In C w‰re das ganze ja ¸berhaupt kein Problem...

    Danke!
  • RE: Hallo Leute

    F¸r was mˆchtest Du ein NSScanner-Beispiel? F¸r das Umwandeln in Zahlen hab ich ja schon ein Beispiel geschrieben. F¸r das lˆschen eines Teils aus einem String mal hier ein Beispiel:

    NSString *string; // hier steht dann das Ergebnis drin
    NSString *original = @"Hier der String (mit Klammern), der zu bearbeiten ist";
    NSScanner *scanner = [NSScanner scannerWithString:original];
    [scanner scanUpToString:@"(" intoString:&string];
    [scanner scanUpToString:@")" intoString:nil];
    string = [string stringByAppendingString:[original substringFromIndex:[scanner scanLocation]+1]];

    In 'string' ist dann der Originalstring ohne "(mit Klammern)". Dieser Code ist ungetestet und verzichtet auf jede Art von Fehlerpr¸fung. Daher alles ohne Gew‰hr. :]

    Michael
  • RE: Hallo Leute

    Oder man machts so:

    NSRange aRange;
    NSMutableString string = [NSMutableString stringWithString:@"Hier der String (mit Klammern), der zu bearbeiten ist"];
    NSScanner *scanner = [NSScanner scannerWithString:string];
    [scanner scanUpToString:@"(" intoString:nil];
    aRange.location = [scanner scanLocation];
    [scanner scanUpToString:@")" intoString:nil];
    aRange.length = [scanner scanLocation] - aRange.location + 1;
    [string deleteCharactersInRange:aRange];

    Nat¸rlich wieder ungetestet und ohne Gew‰hr. :]
    Michael
  • RE: Hallo Leute

    Zur Umwandlung von unichar:
    Was meinst Du mit Umwandlung? Willst du in einem String wie z.B. @"Die Zahl 10 in einem String" die "10" in einen integer umwandeln? Wenn ja, siehe mein Beispiel weiter oben.

    Wenn Du nur den Zeichencode in eine Integer-Variable haben willst, dann geht das so:

    unichar zeichen = 'X';
    int zeichencode = zeichen;

    Michael