//
// C_string_IntAry_Strng.ino
//
//
// https://wokwi.com/projects/397956504849507329
//
//
uint8_t Gary_UnknwnCllr8[25] = {0};
//
void strNum_toIntArray(const char *ptr) {
// parses (from left to right) the input string -ptr- (C style) to find
// the digits: then puts them into the GLOBAL array -Gary_UnknwnCllr8-
//
// code adapted from: https://forum.arduino.cc/t/converting-string-to-integer/363744/2
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
// set locals
uint8_t Idx8 = 0, Val8 = 0;
//
while (*ptr) {
// convert current character to integer
Val8 = uint8_t(*ptr);
// (ASCII) check if between -0- to -9-
if ((Val8 > 47) && (Val8 < 58) && (Idx8 < 25)) {
// store the Decimal (0-9) value
Gary_UnknwnCllr8[Idx8] = Val8 - 48;
Idx8 ++;
//
} else if (Idx8 > 24) {
// the GLOBAL array is full
break; // exit loop
//
} // if-else
//
ptr ++;
//
} // while
//
} // strNum_toIntArray()
String getDigits(const char *ptr) {
// parses (from Left to Right) the input string -ptr- (C style)
// to find the Digits: then returns them in a string object
//
// code adapted from: https://forum.arduino.cc/t/converting-string-to-integer/363744/2
// Whandall @ feb 2016
//
String sOutNum;
// the String reserve() function allows you to allocate a buffer in memory
sOutNum.reserve(10);
//
while (*ptr) {
//
if ((*ptr) >= '0' && (*ptr) <= '9') sOutNum += String(*ptr);
ptr ++;
//
} // while
//
return sOutNum;
//
} // getDigits()
void IntAry_toStrng(String &sOutNum, String &sDate) {
// convertion of an Array of Byte in to String Object
// using the GLOBAL array -Gary_UnknwnCllr8-
//
// reset the two input Strings
sOutNum = "";
sDate = "";
//
for (uint8_t i = 0; i < 25; i++) {
// convert the array of integers in two Strings
if (i < 19) {
sOutNum += String(Gary_UnknwnCllr8[i]);
} else {
sDate += String(Gary_UnknwnCllr8[i]);
} // if-else
//
} // for
//
} // IntAry_toStrng()
// ===============================================================================
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//
String s = "";
String myString = "12abc45DE0";
Serial.print(F("\nInput: ")); Serial.println(myString);
Serial.print(F("Output: -"));
s = getDigits(myString.c_str());
Serial.print(s);Serial.print(F("-\n"));
//
s = "";
myString = "12ab45DE01";
Serial.print(F("\nInput: ")); Serial.println(myString);
Serial.print(F("Output: -"));
s = getDigits(myString.c_str());
Serial.print(s);Serial.print(F("-\n"));
//
s = "";
myString = "12a45DE012";
Serial.print(F("\nInput: ")); Serial.println(myString);
Serial.print(F("Output: -"));
s = getDigits(myString.c_str());
Serial.print(s);Serial.print(F("-\n"));
//
s = "";
myString = "1245E01234";
Serial.print(F("\nInput: ")); Serial.println(myString);
Serial.print(F("Output: -"));
s = getDigits(myString.c_str());
Serial.print(s);Serial.print(F("-\n"));
//
s = "";
myString = "1245012345";
Serial.print(F("\nInput: ")); Serial.println(myString);
Serial.print(F("Output: -"));
s = getDigits(myString.c_str());
Serial.print(s);Serial.print(F("-\n"));
//
s = "";
myString = "1234567E89d0123a456q78901z234Y5Z"; // 25 Digits
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "a12b34c56d7E89d0123a456q78901z234Y5Z9"; // 26 Digits
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "aBc1DeF2gHiJ3kL45mNoPqRsTuVwXyZ65AbCdEfGhIjKlMnOpQrStUvWxYz"; // 6 Digits
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "aBc1DeF2gHiJ3kL4m5N6oPqRsTuVwXy7ZAbCdEfGhIjKlMnOpQrStUvWxYz89"; // 9 Digits
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
myString = "";
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "1aBcDeFgHiJkLmNoPqRsTuVwXyZAbCdEfGhIjKlMnOpQrStUvWxYz"; // 1 Digit
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
myString = "";
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "aBcDeFgHiJkLmNoPqRsTuVwXy1ZAbCdEfGhIjKlMnOpQrStUvWxYz"; // 1 Digit
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
myString = "";
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "aBcDeFgHiJkLmNoPqRsTuVwXyZAbCdEfGhIjKlMnOpQrStUvWxYz1"; // 1 Digit
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
myString = "";
//
// reset the contents of the GLOBAL array
memset(Gary_UnknwnCllr8, 0, 25);
myString = "1234567890123456789240515"; // 25 (19+6) Digits
Serial.print(F("\n- GOBAL array IN ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.print(F("\nString in = ")); Serial.println(myString);
// convert String object in to Byte Array
strNum_toIntArray(myString.c_str());
//
Serial.print(F("Output: GOBAL array ="));
for (uint8_t i = 0; i < 25; i++) Serial.print(Gary_UnknwnCllr8[i]);
Serial.println();
// get Phone Num. and Date Strings
myString = "";
s = "";
IntAry_toStrng(myString, s);
Serial.print(F("Telephone: ")); Serial.print(myString); Serial.print(F(" [up to 19 Digits]\n"));
Serial.print(F("Date: ")); Serial.print(s); Serial.print(F(" [2024 may 15]\n"));
//
myString = "";
s = "";
//
} // setup()
void loop() {
// put your main code here, to run repeatedly:
delay(100);
//
} // loop()
/*
Serial Monitor Out:
Input: 12abc45DE0
Output: -12450-
Input: 12ab45DE01
Output: -124501-
Input: 12a45DE012
Output: -1245012-
Input: 1245E01234
Output: -124501234-
Input: 1245012345
Output: -1245012345-
- GOBAL array IN =0000000000000000000000000
String in = 1234567E89d0123a456q78901z234Y5Z
Output: GOBAL array =1234567890123456789012345
- GOBAL array IN =0000000000000000000000000
String in = a12b34c56d7E89d0123a456q78901z234Y5Z9
Output: GOBAL array =1234567890123456789012345
- GOBAL array IN =0000000000000000000000000
String in = aBc1DeF2gHiJ3kL45mNoPqRsTuVwXyZ65AbCdEfGhIjKlMnOpQrStUvWxYz
Output: GOBAL array =1234565000000000000000000
- GOBAL array IN =0000000000000000000000000
String in = aBc1DeF2gHiJ3kL4m5N6oPqRsTuVwXy7ZAbCdEfGhIjKlMnOpQrStUvWxYz89
Output: GOBAL array =1234567890000000000000000
- GOBAL array IN =0000000000000000000000000
String in = 1aBcDeFgHiJkLmNoPqRsTuVwXyZAbCdEfGhIjKlMnOpQrStUvWxYz
Output: GOBAL array =1000000000000000000000000
- GOBAL array IN =0000000000000000000000000
String in = aBcDeFgHiJkLmNoPqRsTuVwXy1ZAbCdEfGhIjKlMnOpQrStUvWxYz
Output: GOBAL array =1000000000000000000000000
- GOBAL array IN =0000000000000000000000000
String in = aBcDeFgHiJkLmNoPqRsTuVwXyZAbCdEfGhIjKlMnOpQrStUvWxYz1
Output: GOBAL array =1000000000000000000000000
- GOBAL array IN =0000000000000000000000000
String in = 1234567890123456789240515
Output: GOBAL array =1234567890123456789240515
Telephone: 1234567890123456789 [up to 19 Digits]
Date: 240515 [2024 may 15]
*/