Arduino String

Fra Holstebro HTX Wiki
(Omdirigeret fra Kategori:Arduino String)
Skift til: navigering, søgning

Oprindeligt havde C til Arduino ikke String-typen, men da den er meget bredt brugt i programmering, og den er ret praktisk at bruge, så er den blevet implementeret i sproget.

Den oprindelige måde at håndtere strenge på

Arduino kunne oprindeligt godt håndtere noget, som kunne anvendes til karakter-strenge, nemlig ved at oprette er array af char[1]

Fordelen ved at oprette en streng på denne måde er, at man har styr på størrelsen af strengen, og man har styr på hvor meget hukommelse der anvendes i Arduinoen, fordi den maksimale størrelse af strengen er det der er sat plads af til i hukommelsen.

Ulempen er så at man ikke umiddelbart kan lægge to strenge sammen, og manipulere med dem på den måde - der skal man kopiere sammen ind i en strengvariabel, og holde styr på at man ikke overskrider dens grænse.

En ting der er smart at vide om denne type strenge er, at de er 0-termineret. Det betyder at der ud over de synlige karakterer gemmes en karakter til sidst med ASCII-værdien 0. Det har fx betydning for Serial.print, som printer indtil denne 0-karakter mødes. Dette betyder at strengen er 1 længere end det den umiddelbart ser ud til at være.

String typen i Arduino

En String er lavet som et objekt i Arduino, og derfor håndteres den funktionalitet der er på String som metoder[2]. Det betyder at man udfører operationen på en given streng, som i omtalen her er angivet som myString.

Metoder til String()

myString.charAt(n) returnerer en karakter, der står på n-positionen i myString.

myString.compareTo(otherStr) returnerer et negativt tal, hvis myString ligger alfabetisk før otherStr. Der returneres 0 hvis de to strenge er ens, og et positivt tal, hvis myString ligger alfabetisk efter otherStr.

myString.concat(parameter) lægger noget ind i forlængelse af myString som en streng, parameter kan være af forskellige typer - returnerer sandt, hvis det går godt, eller er myString uændret og der returneres falsk.

myString.c_str() returnerer en pointer, så man kan anvende resultatet som et char-array, der er null-termineret. Det kan være risikabelt at give sig til at modificere i char-arrayet, da det kan smadre myString. Anvendes med stor forsigtighed, og slet ikke blandet sammen med andre String metoder.

myString.endsWith(otherStr) returnerer sandt hvis myString har samme indhold til sidst i strengen, som indholdet i otherStr, ellers falsk.

myString.startsWith(otherStr) har samme funktion som endsWith - bare at der testes på starten af myString.

myString.equals(otherStr) returnerer sandt hvis myString har præcist samme indhold som otherStr, ellers falsk.

myString.equalsIgnoreCase(otherStr) har samme funktion som equals, men med den tilføjelse, at store og små bogstaver ses som samme tegn (virker sikkert ikke med danske karakterer).

myString.getBytes(byteBuf, len) tager antallet len karakterer fra myString og kopierer over i et byte-array byteBuf.

myString.indexOf(chr) returnerer placeringen af den første forekomst af karakteren chr i strengen myString, returnerer -1, hvis karakteren ikke findes.

myString.indexOf(chr, fra) returnerer placeringen af den første forekomst af karakteren chr set i strengen myString fra positionen fra, returnerer -1, hvis karakteren ikke findes.

myString.lastIndexOf(chr) virker som indexOf(), bare at det er sidste position der findes.

myString.lastIndexOf(chr, fra) virker som indexOf(), bare at det er sidste position der findes mellem fra og starten af strengen mySting.

myString.length() returnerer antallet af karakterer i myString.

myString.remove(index) fjerner resten af indholdet af strengen myString fra index til enden.

myString.remove(index, antal) et antal karakterer fra myString, taget fra index og antal frem.

myString.replace(oneString, otherString) søger efter oneString som en delstreng eller en karakter i myString, og hvis den findes, så erstattes den med otherString.

myString.reserve(n) angiver at myString skal have plads til n antal karakterer, så det er reserveret i hukommelsen.

myString.setCharAt(index, chr) erstatter den karakter der er på index-pladsen i myString med karakteren chr.

myString.substring(fra) returnerer en streng, der er et udsnit af myString, fra positionen fra og til enden af myString.

myString.substring(fra, til) returnerer en streng, der er et udsnit af myString, fra positionen fra og til positionen af til i myString.

myString.toCharArray(charArray, len) kopierer len antal karakterer fra myString til arrayet charArray.

myString.toDouble() returnerer et tal af typen double konverteret fra indholdet af myString - konverterer frem til den ikke forstår mere. Hvis der ikke er tal i starten, så returneres 0.0.

myString.toInt() returnerer et tal af typen int konverteret fra indholdet af myString - konverterer frem til den ikke forstår mere. Hvis der ikke er tal i starten, så returneres 0.

myString.toFloat() returnerer et tal af typen float konverteret fra indholdet af myString - konverterer frem til den ikke forstår mere. Hvis der ikke er tal i starten, så returneres 0.0.

myString.toLowerCase() konverterer strengen myString til små bogstaver, returnerer ikke noget, ændringen sker inde i myString.

myString.toUpperCase() konverterer strengen myString til store bogstaver, returnerer ikke noget, ændringen sker inde i myString.

myString.trim() fjerner whiteSpace karakterer fra start og slutning af myString - whiteSpace er mellemrum, tabulator og linjeskift. whiteSpaces inde i myString forbliver uberørt. Ændringen sker inde i myString.

Tilføjelser af funktioner

Som det er nu (december 2020), så har String ikke en split-metode.

Den er implementeret i String Split.

Referencer

  1. Arduino string Definition som array of char
  2. Den anden String-type der ligner String fra andre sprog