Go Down

Topic: #c - Strings Vergleichen groß-kleinschreibung ignorieren (Read 2132 times) previous topic - next topic

Klaschni

Hiho!

habe eine Programmiertechnische Frage:

Ich würde gern zwei Strings vergleichen dabei aber die große Kleinschreibung ignorieren wollen.

mit strcasestr(String, "suchstring") kann ich zwar vergleichen aber die Funktion ignoriert die Groß -Kleinschreibung leider nicht :/

Bisher habe ich dafür keinen halbwegs praktikablen Ansatz gefunden.

Freue mich über Denkanstöße!

Danke,
Klaschni

michael_x

stackoverflow.com/questions/9935642/how-do-i-use-strcasestr

Oder, wenn einer der Texte ein fester konstanter Vergleichsstring ist und der andere modifiziert werden kann, den andern erst in einer Schleife per tolower() wandeln.


Klaschni

tolower() geht soweit ich das herausgefunden habe nur mit char[] aber nicht mit Strings.

Whandall

Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Serenifly

tolower() geht soweit ich das herausgefunden habe nur mit char[] aber nicht mit Strings.
Die ganzen C String Funktionen gehen nicht mit Arduino String Objekten. Das ist der große Nachteil davon.

Klaschni

Hab meinen String zum Array gemacht und alles klein. Nun kann ich direkt mit meinem vergleichsstring vergleichen :) danke!
Code: [Select]

String tolowerString(String text){

  String returntext;
  char strConverted[text.length()+1];
  text.toCharArray(strConverted,text.length()+1);
 
  for(int i=0; i < text.length(); i++){ 
    strConverted[i] = tolower(strConverted[i]);
    returntext += strConverted[i];
  }
  return returntext;
}

michael_x

strcasestr wäre auch nicht mit den unnötigen Arduino-Sting Objekten gegangen.

Je früher du dir die String Objekte abgewöhnst, desto besser.
OT und nicht ganz ernst gemeint: simplify your life

Serenifly

Wieso dieser Aufwand? Du kannst doch auch über String Objekte direkt iterieren und jedes einzelnes Zeichen ändern. text[index] geht und liefert das aktuelle Zeichen!

Abgesehen davon hat die String Klasse auch eine fertige Methode dafür:
http://www.arduino.cc/en/Reference/StringToLowerCase

Klaschni

Danke das ist einfacher :) dann so. wieder was gelernt :)

uwefed

Arduino kann kein #c sondern C und eine Teilmenge von C++
Grüße Uwe

Whandall

Arduino kann nur seinen Assembler-Code ausführen.
Die Arduino IDE benutzt einen vollwertigen GCC C++ Compiler ohne besondere Einschränkungen.
Einige C++ übliche Bibliotheken sind zu groß oder zu speicherfressend um auf einem Arduino zu laufen und fallen deswegen aus.
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Go Up