[solidity] string 비교하는 방법

Yurright·2023년 12월 30일
0

solidity

목록 보기
5/6
post-custom-banner

스트링 비교해야 할때 해시함수 돌려서 확인한다.

TypeError: Built-in binary operator == cannot be applied to types string memory and literal_string"abc".

솔리디티 코드를 작성하다보면, 두 스트링 값이 같은지 확인해야 할 때가 있다.


   function getString(string memory _s) public pure returns(bool) {
       if ( _s == "abc") {
           return true;
       } else {
           return false;
       }
   }

그러나, 스트링 비교 코드를 작성하면, 타입에러가 발생해 난처할 것이다.

솔리디티는 스트링 비교 시, 해시함수를 돌려 일치여부를 확인해야 한다.

function stringComp(string memory _s) public pure returns(bool) {
       if(keccak256(bytes(_s)) == keccak256(bytes("abc"))) {
           return true;
       } else {
           return false;
       }
   }

같은 스트링 해시하면 같은 값 나온다는 것 활용해서 같은지 판단!!!


require 이용해 가스비 최적화

function stringComp_eff(string memory _s) public pure returns(bool) {


       require(bytes(_s).length ==bytes("abc").length, "No");


       if(keccak256(bytes(_s)) == keccak256(bytes("abc"))) {
           return true;
       } else {
           return false;
       }
   }

함께 참고할 만한 글

profile
블록체인 개발자 - 개발 정보 기록 및 공유
post-custom-banner

0개의 댓글