Solidity - Dizeler
Solidity, hem çift tırnak (") hem de tek tırnak (') kullanarak String değişmezini destekler. String türünde bir değişken bildirmek için bir veri türü olarak dize sağlar.
pragma solidity ^0.5.0;
contract SolidityTest {
string data = "test";
}
Yukarıdaki örnekte, "test" bir dize değişmezidir ve veri bir dize değişkenidir. Dize işlemi bayt işlemine kıyasla daha fazla gaz gerektirdiğinden, String yerine bayt türlerinin kullanılması daha çok tercih edilen yöntemdir. Solidity, baytlar arasında dizgeye ve tam tersi arasında dahili dönüşüm sağlar. Solidity'de String değişmezini bir byte32 tipi değişkene kolayca atayabiliriz. Solidity, bunu bir byte32 değişmezi olarak kabul eder.
pragma solidity ^0.5.0;
contract SolidityTest {
bytes32 data = "test";
}
Kaçış Karakterleri
Sr.No. | Karakter açıklaması |
---|---|
1 | \n Yeni bir satır başlatır. |
2 | \\ Ters eğik çizgi |
3 | \' Tek alıntı |
4 | \" Çift Alıntı |
5 | \b Geri tuşu |
6 | \f Form besleme |
7 | \r Satırbaşı |
8 | \t Sekme |
9 | \v Dikey Sekme |
10 | \xNN Hex değerini temsil eder ve uygun baytları ekler. |
11 | \uNNNN Unicode değerini temsil eder ve UTF-8 dizisi ekler. |
Bayt'tan Dize Dönüşümüne
Baytlar, string () yapıcısı kullanılarak String'e dönüştürülebilir.
bytes memory bstr = new bytes(10);
string message = string(bstr);
Misal
Solidity'de dizenin nasıl çalıştığını anlamak için aşağıdaki kodu deneyin.
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);
}
}
Solidity First Application bölümünde verilen adımları kullanarak yukarıdaki programı çalıştırın .
Çıktı
0: string: 3