Arduino:
Merkkijonosta lainausmerkkien poistaminen
Miten:
Voit poistaa lainausmerkit merkkijonosta Arduinolla käymällä merkkijonon merkit läpi ja rakentamalla merkkijonon uudelleen ilman lainausmerkkejä. Esimerkiksi:
String removeQuotes(String str) {
String tulos = ""; // Luo tyhjä merkkijono tuloksen säilyttämiseen
for (int i = 0; i < str.length(); i++) {
if (str[i] != '"' && str[i] != '\'') { // Tarkista jokainen merkki
tulos += str[i]; // Lisää tulosmerkkijonoon, jos ei ole lainausmerkki
}
}
return tulos;
}
void setup() {
Serial.begin(9600);
String testStr = "'Hei, maailma!'";
Serial.println(removeQuotes(testStr)); // Pitäisi tulostaa: Hei, maailma!
}
void loop() {
// Ei mitään tehtävää täällä
}
Esimerkkitulostus sarjamonitorissa olisi:
Hei, maailma!
Syväsukellus
Merkkijonoista merkkien poistaminen ei ole ainutlaatuista Arduinolle; se on yleistä monissa ohjelmointiympäristöissä. Historiallisesti merkkijonojen käsittelyfunktiot ovat olleet olennainen osa ohjelmointikieliä, jotta kehittäjät voivat puhdistaa ja jäsentää dataa tehokkaasti.
Manuaalisen silmukoinnin ja uuden merkkijonon rakentamisen lisäksi, kuten yllä näytettiin, on olemassa vaihtoehtoisia menetelmiä. Esimerkiksi voit käyttää replace()
-metodia korvaamaan lainausmerkit tyhjällä merkkijonolla, vaikka siinä onkin kompromisseja luettavuuden ja pakomerkkien hallinnan suhteen.
String removeQuotes(String str) {
str.replace("\"", ""); // Korvaa kaikki kaksoislainausmerkit
str.replace("\'", ""); // Korvaa kaikki yksittäiset lainausmerkit
return str;
}
Vaihtoehtojen haittapuolien ymmärtäminen on tärkeää. Silmukkamenetelmä voi olla hitaampi pitkille merkkijonoille, mutta se on eksplisiittinen ja helppo mukauttaa (kuten jos tarvitsisit poistaa vain alku- ja loppulainausmerkit). replace()
-metodi on tiiviimpi ja yleensä nopeampi, mutta siitä tulee hankalampaa, jos merkkijonossa on käsiteltävä paetut lainausmerkit.
Katso myös
- Arduinon merkkijonoviite: https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/
- W3Schoolsin opas C++ -merkkijonojen käsittelyyn (liittyy Arduinon kieleen): https://www.w3schools.com/cpp/cpp_strings.asp
- Stack Overflow -keskustelut C++ -merkkijonojen käsittelystä (Arduinon pohjakieli): https://stackoverflow.com/questions/tagged/string+cpp