Contract Development – Iterate String Characters and Numerical Check in Solidity

contract-developmentsolidity

For example I have following string, which will be given as input from a user:

string str = "0-00:03"

Inside my contract I would like to check that:

  • str[1] should be "-"
  • str[4] should be ":"
  • and the remaining
    characters have to be numeric value.

This operation is easy to do C where with pointer I can iterate each character and check its char value. But I was not able to operate this inside my contract under Solidity language.

Best Answer

Just cast the string to bytes

   function testStr(string str) constant returns (bool){
        bytes memory b = bytes(str);
        if(b.length != 7) return false;
        for(uint i; i<7; i++){
            if(i==1){
                if(b[i] != 45) return false;
            }
            else if (i==4){
                if(b[i] != 58) return false;
            }
            else if(b[i] < 48 || b[i] > 57) return false;

        }

        return true;
    }
Related Topic