Solidity
如何將字元串的要求設置為不為空
我想為字元串變數不能為空的字元串編寫一個要求條件。怎麼寫,因為字元串沒有使用 != 運算符
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; } } }
如何通過將字元串轉換為
bytes
and來比較字元串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"); } }
您可以將此邏輯包裝到修飾符中,並在您需要的任何方法上呼叫它。