Solidità - Stringhe
Solidity supporta String literal utilizzando sia virgolette doppie (") e virgolette singole ('). Fornisce string come tipo di dati per dichiarare una variabile di tipo String.
pragma solidity ^0.5.0;
contract SolidityTest {
string data = "test";
}
Nell'esempio precedente, "test" è una stringa letterale e data è una variabile stringa. Il modo più preferito consiste nell'usare i tipi di byte invece di String poiché l'operazione con stringa richiede più gas rispetto all'operazione con i byte. Solidity fornisce la conversione incorporata tra byte in stringa e viceversa. In Solidity possiamo assegnare facilmente String letterale a una variabile di tipo byte32. Solidity lo considera un byte32 letterale.
pragma solidity ^0.5.0;
contract SolidityTest {
bytes32 data = "test";
}
Caratteri di fuga
Sr.No. | Carattere e descrizione |
---|---|
1 | \n Inizia una nuova riga. |
2 | \\ Barra rovesciata |
3 | \' Citazione singola |
4 | \" Doppia citazione |
5 | \b Backspace |
6 | \f Avanzamento modulo |
7 | \r Ritorno in carrozza |
8 | \t Tab |
9 | \v Tab verticale |
10 | \xNN Rappresenta il valore esadecimale e inserisce i byte appropriati. |
11 | \uNNNN Rappresenta il valore Unicode e inserisce la sequenza UTF-8. |
Conversione da byte a stringa
I byte possono essere convertiti in String utilizzando il costruttore string ().
bytes memory bstr = new bytes(10);
string message = string(bstr);
Esempio
Prova il codice seguente per capire come funziona la stringa in Solidity.
pragma solidity ^0.5.0;
contract SolidityTest {
constructor() public{
}
function getResult() public view returns(string memory){
uint a = 1;
uint b = 2;
uint result = a + b;
return integerToString(result);
}
function integerToString(uint _i) internal pure
returns (string memory) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);
}
}
Eseguire il programma precedente utilizzando i passaggi forniti nel capitolo Solidity First Application .
Produzione
0: string: 3