String
如何在solidity中拆分字元串?
我正在使用 1155 令牌標準的 OpenZeppelin 預設。(https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155/presets)我可以用它來鑄造代幣,並且我可以通過交易傳輸 4 個參數:
地址(接收者的)id(令牌的)數量(令牌的數量)數據(字節格式的附加數據)
我使用 id 和 data 來傳輸數據現在我遇到了一個問題,我想在數據欄位中傳輸兩個變數(以字元串格式)。首先,我必須將欄位數據從字節轉換為字元串。然後我想將數據欄位的內容分成兩個變數。一個變數有 13 個字元,另一個有 15 個字元。然後我可能必須將每個拆分分配給這兩個變數。通過發出事件,我可以在區塊鏈上傳輸兩個變數,並可以在日誌中訪問它。
請原諒,我是紮實的編碼的血腥菜鳥。有人知道我如何制定一個將字節轉換為字元串、將字元串分成兩部分然後將其分配給新變數的函式嗎?
如果是您自己將這兩個字元串打包成一個
s1
,那麼您可以:s2``bytes
- 在原始碼(在 JavaScript 中):
const data = abiCoder.encode(["string", "string"], [s1, s2])
2. 通過data
合約函式傳遞 3. 在接收端(在 Solidity 中):
(string memory s1, string memory s2) = abi.decode(data, (string, string))
這樣做可以完全避免字元串操作。
PS 請記住,
data
它不是供transfer
函式本身使用的,而是供傳輸接收方使用的(如果該接收方是合規ERC1155TokenReceiver
合約的話)。