hi,
for Arduino C++ Strings some features are missing:
.readStringUntil(EOL) or perhaps a new .readln(): to read an entire textline all at once until end of line, discarding any EoL/CR
(e.g., text lines may have \n or \r\n at EoL, so readStringUntil('\n') or readStringUntil('\r') may fail or mess it up)
additionally also helpful:
.insert(substr, pos, len)
.delete(pos, len)
and especially
.TokenArg(token, delimiter1, delimiter2) // edit: optionally also just named .arg()
// returns the value of a token, e.g. for a String containing analog=1234;
String myArg = myString.TokenArg("analog", "=", ";") would return 1234 as a String.
OTOH, IMO .compareTo() is ambiguous, it returns +/-/0 for after/before/ident but completely unclear if or what when neither and they are completely different. Better if it returned NAN/-1/0/+1 for notIn/smaller/ident/bigger.
PS,
just recalled that the WebServer lib provides a method .arg() which works somehow like the requested String.TokenArg() functionality:
int Analog1=0;
String myArg = webserver.arg("analog");
if (myArg != "") {
Analog1 = myArg.toInt();
}
That could be also used as a pattern for a String class TokenArg function.
hi, for Arduino C++ Strings some features are missing: .readStringUntil(EOL) or perhaps a new .readln(): to read an entire textline all at once until end of line, discarding any EoL/CR (e.g., text lines may have \n or \r\n at EoL, so readStringUntil('\n') or readStringUntil('\r') may fail or mess it up)
additionally also helpful: .insert(substr, pos, len) .delete(pos, len) and especially .TokenArg(token, delimiter1, delimiter2) // edit: optionally also just named .arg() // returns the value of a token, e.g. for a String containing analog=1234;
String myArg = myString.TokenArg("analog", "=", ";")
would return 1234 as a String.OTOH, IMO .compareTo() is ambiguous, it returns +/-/0 for after/before/ident but completely unclear if or what when neither and they are completely different. Better if it returned NAN/-1/0/+1 for notIn/smaller/ident/bigger.
PS, just recalled that the WebServer lib provides a method
.arg()
which works somehow like the requestedString.TokenArg()
functionality:That could be also used as a pattern for a String class TokenArg function.