String verändern nach ","



  • Hi luete,
    ich habe einen string, der sieht z.b so aus
    "5453,gdfgd,342,jrf,54444,574,1,dfsd"

    und noch einer der sieht auch so aus nur mit anderen zahlen bustaben :
    "8686,khjkhj,756752,rtz,5867,14344,3,aaaa"

    jetzt möchte ich aus der 1 und der 3 (vorletzte zahl eine 4 machen)
    also aus :
    "5453,gdfgd,342,jrf,54444,574,1,dfsd"

    dann

    "5453,gdfgd,342,jrf,54444,574,4,dfsd"

    kann mir einer sagen wie das geht?



  • Der Aufwand hängt davon ab, wieviel über die Konstellation bekannt ist. Man könnte anhand der ','s trennen und den vorletzten Wert ändern und es entsprechend wieder zusammensetzen.

    Oder wenn es immer nur Ziffern (also einstellig) sind, kann man auch einfach die letzte Position eines Kommas ermitteln und die Stelle davor ändern.

    Kommt halt drauf an.



  • Hi, ich habs aber nicht ausprobiert:

    char* zeichen =  strrchr(DEINSTRING, ',');
    zeichen--;
    if(*zeichen == '1' || *zeichen == '3') *zeichen = '4';
    


  • danke für die antwort.

    Es sind immer gleichviele ","
    aber der wert is immer anders

    also mal "4322" mal "533333" oder "asdf" "lgdgkdfgö"



  • std::string str1 = "5453,gdfgd,342,jrf,54444,574,1,dfsd";
    str1[str1.rfind(',')-1] = '3';
    

    damit wird das zeichen vor dem letzten ',' ersetzt

    mf
    Malgoz89



  • Malgoz89 schrieb:

    std::string str1 = "5453,gdfgd,342,jrf,54444,574,1,dfsd";
    str1[str1.rfind(',')-1] = '3';
    

    damit wird das zeichen vor dem letzten ',' ersetzt

    mf
    Malgoz89

    Entspricht eher dem was er will:

    std::string str1 = "5453,gdfgd,342,jrf,54444,574,1,dfsd";
    int lPos = str1.rfind(',');
    int fPos = str1.rfind(',', lPos-1);
    str1.replace(str1.begin()+fPos+1, str1.begin()+lPos, "4");
    

Log in to reply