Solidity에서 문자열의 길이를 얻는 방법

2059 단어 solidity

전제



Solidity v0.5.0에서
현재, 캐릭터 라인(String)에는 length 메소드가 존재하지 않는다.
그러나 bytes에는 length 메소드가 존재하고 있다.

방법



따라서 문자열을 한 번 바이트로 변환 한 다음 바이트의 길이 (uint)를 얻음으로써 문자열 길이를 얻습니다.
string -> bytes -> uint

환경


  • Solidity 0.5.0

  • 샘플 코드



    이하에 그 코드를 기재하고 있으므로, Remix등으로 시험해 주셨으면 한다.
    예를 들어, "hoge"라는 문자열을 주면 len은 4가 된다.
    pragma solidity ^0.5.0;
    contract StrLen {   
        function getStrLen(string memory _str) public returns(uint) {
            uint len = bytes(_str).length;
            return len;
        }   
    }
    

    샘플을 움직인 결과


    getStrLen("hoge")
    
    len: 4
    



    다만, 문자열에 히라가나 등을 주면 당연히 상정외의 수치가 돌아오므로 주의.
    getStrLen("ぽよ")
    
    len: 6
    

    좋은 웹페이지 즐겨찾기