This code Fragment keeps failing the compilation.
String s_value1 ="This is a test 10-percent-";
String s_value2 = s_value1.replace("-percent-", "%");
What am i doing wrong?
Please help.
This code Fragment keeps failing the compilation.
String s_value1 ="This is a test 10-percent-";
String s_value2 = s_value1.replace("-percent-", "%");
What am i doing wrong?
Please help.
The ‘%’ sign has a special meaning in C. If you simply want to print the sign, you should use ‘%%’ or resort to the ASCII sign like this: print("%c", 37);
Here, the ‘%c’ is a Caracter placeholder(?) for the variable mentioned after the comma, which in this case is the ASCII value for the %-sign.
Give it a try and let us know if it worked out for you.
Thanks Moors7,
Do you have en “String.replace” example that is excepted by the compiler?
String s_value1 ="This is a test 10-percent-";
String s_value2 = s_value1.replace("-percent-","q");
and still get a error:
error: conversion from ‘void’ to non-scalar type ‘String’ requested
@prodders, the thing with String.replace()
is, that it does not return an altered string but does the replacement in-place.
After the operation s_value1
will have changed.
The function declaration of String::replace()
looks like this:
void replace(char find, char replace);
void replace(const String& find, const String& replace);
Hi @prodders
The Arduino String class has two replace methods:
Neither of these return a new String–they both work “in place” on the current String you call then on.
Try this:
String s_value1 ="This is a test 10 Q";
s_value1.replace('Q', '%'); //note single quotes, not double quotes
String s_value3 ="This is a test 10-percent-";
String s_find = "-percent-";
String s_repl = "%";
s_value3.replace(s_find, s_repl);
@prodders, in addition to @BKO 's sample, you can still use double quoted const char*
literals, as you scetched out in your own post, since there is a String consructor, that will construct Strings out of your parameters to call the second overload of String::replace()
(see my previous post)
String(const char *cstr = "");
so this should work
String s_value1 ="This is a test 10-percent-";
s_value1.replace("-percent-", "%%");
I moved 6 posts to a new topic: Problems with webserver library