diff --git a/functions.cpp b/functions.cpp new file mode 100644 index 0000000..f65104a --- /dev/null +++ b/functions.cpp @@ -0,0 +1,99 @@ +uint8_t utf8Ascii(uint8_t ascii) { + static uint8_t cPrev; + uint8_t c = '\0'; + + if (ascii < 0x7f) // Standard ASCII-set 0..0x7F, no conversion + { + cPrev = '\0'; + c = ascii; + } + else + { + switch (cPrev) // Conversion depending on preceding UTF8-character + { + case 0xC2: c = ascii; break; + case 0xC3: c = ascii | 0xC0; break; + case 0x82: if (ascii==0xAC) c = 0x80; // Euro symbol special case + } + cPrev = ascii; // save last char + } + + return(c); +} + + +void utf8Ascii(char* s) { + uint8_t c, k = 0; + char *cp = s; + + while (*s != '\0') + { + c = utf8Ascii(*s++); + if (c != '\0') + *cp++ = c; + } + *cp = '\0'; // terminate the new string +} + + +char* string2char(String command){ + if(command.length()!=0){ + char *p = const_cast(command.c_str()); + return p; + } +} + + +// constant char* to char* +char* cchar2char(String data){ + char* out = new char[data.length()+1]; + strcpy(out, data.c_str()); + return out; +} + + +char * stringReplace(char *search, char *replace, char *string) { + char *tempString, *searchStart; + int len=0; + + searchStart = strstr(string, search); + if(searchStart == NULL) { + return string; + } + + tempString = (char*) malloc(strlen(string) * sizeof(char)); + if(tempString == NULL) { + return NULL; + } + + strcpy(tempString, string); + + len = searchStart - string; + string[len] = '\0'; + + strcat(string, replace); + + len += strlen(search); + strcat(string, (char*)tempString+len); + + free(tempString); + + return string; +} + + +String split(String s, char parser, int index) { + String rs=""; + int parserIndex = index; + int parserCnt=0; + int rFromIndex=0, rToIndex=-1; + while (index >= parserCnt) { + rFromIndex = rToIndex+1; + rToIndex = s.indexOf(parser,rFromIndex); + if (index == parserCnt) { + //if (rToIndex < 0 || rToIndex < -1) return ""; + return s.substring(rFromIndex,rToIndex); + } else parserCnt++; + } + return rs; +}