Solidity

如何將字元串的要求設置為不為空

  • April 1, 2022

我想為字元串變數不能為空的字元串編寫一個要求條件。怎麼寫,因為字元串沒有使用 != 運算符

function createOrder(address _seller, string memory orderName) public onlySeller returns(bool){
       require(_seller != address(0), "Invalid Address");
       require(orderName != "null", "Invalid Name");

您可以像這樣檢查其字節的長度:

require(bytes(orderName).length != 0)

做很多事情string是不允許的,我會附上兩個例子來幫助你:

如何通過將字元串轉換為bytes並驗證長度來驗證字元串是否為空:

contract testContract {
   function isStringEmpty(string memory _test) public view returns(bool) {
       bytes memory checkString = bytes(_test);
       if (checkString.length > 0) {
           return false;
       } else {
           return true;
       }
   }
}

如何通過將字元串轉換為bytesand來比較字元串keccak256

pragma solidity ^0.6.0;

contract testContract {
   function stringComparison(string memory _test) public view returns(bool) {
       require(keccak256(bytes(_test)) != keccak256(bytes("null")), "Invalid Name");
   }
}

您可以將此邏輯包裝到修飾符中,並在您需要的任何方法上呼叫它。

引用自:https://ethereum.stackexchange.com/questions/93109