Arduino:
Merkkien poistaminen hakemalla osumia kaavaan
How to: - Näin teet:
String data = "H3l5l7o, W0o2rl4d!";
String pattern = "0123456789";
for (int i = 0; i < pattern.length(); i++) {
data.remove(data.indexOf(pattern.charAt(i)), 1);
}
Serial.begin(9600);
Serial.println(data); // Tulostaa: Hello, World!
Huomaa, että remove()
ei tee mitään, jos merkkiä ei löydy.
Deep Dive - Syväsukellus
Historiallisesti merkkijonon käsittely on kuulunut ohjelmoinnin peruspilareihin. Aikaisemmin tehtävään käytettiin kenties manuaalisia taulukko-operaatioita tai standardikirjastojen funktioita kuten strchr
C-kielessä. Arduino-kielellä String
-luokka tarjoaa korkean tason funktion remove()
, joka tekee merkkien poistosta sujuvaa.
Vaihtoehtoisia tapoja poistaa merkit voi olla käyttää matalamman tason funktioita kuten strtok
tai regex (säännölliset lausekkeet), mutta nää eivät ole suoraan saatavilla Arduinossa ilman erillisiä kirjastoja.
Huomaa, että String
-objektien suuri käyttö voi johtaa fragmentaatioon ja muistiongelmiin Arduinon rajoitetussa ympäristössä. Edistyneemmissä projekteissa, ohjelmoijat saattavat käyttää char
-taulukoita ja manuaalisia algoritmeja tehokkuuden säilyttämiseksi.
See Also - Katso Myös
- Arduino
String
-luokan dokumentaatio: http://arduino.cc/en/Reference/String - Muistinhallinnasta Arduinolla: https://www.arduino.cc/en/Tutorial/Memory
- Säännölliset lausekkeet (engl. regular expressions), ei Arduinon natiivia mutta hyödyllistä merkkijonokäsittelytietoa: https://www.regular-expressions.info/