Compare Strings in Solidity

Published by Mario Oettler on

Last Updated on 12. June 2023 by Mario Oettler

Solidity’s string operations are very limited. This also affects comparing strings. The necessary steps to compare two strings are:

  1. abi-encode both strings seperately:

bytes res1 = abi.encodePacked(<my_string_1>);

bytes res2 = abi.encodePacked(<my_string_2>);

  • Create a keccak hash for each encoded result:

hash1 = keccak256(res1);

hash2 = keccak256(res2)

  • Compare both hashes with

hash1 == hash2;

Example for comparing Strings in Solidity

This is a fully working example of how to compare two strings in Solidity:

pragma solidity 0.8.20;
contract CompareStrings{
    function compareStrings(string memory _s1, string memory _s2) public pure returns(bool areEual){
        return keccak256(abi.encodePacked(_s1)) == keccak256(abi.encodePacked(_s2));
    }
}
Categories: