Solidez - Cuerdas

Solidity admite el literal de cadena con comillas dobles (") y comillas simples ('). Proporciona cadena como tipo de datos para declarar una variable de tipo Cadena.

pragma solidity ^0.5.0;

contract SolidityTest {
   string data = "test";
}

En el ejemplo anterior, "prueba" es un literal de cadena y los datos son una variable de cadena. La forma más preferida es usar tipos de bytes en lugar de String, ya que la operación de la cadena requiere más gas en comparación con la operación de bytes. Solidity proporciona conversión incorporada entre bytes a cadena y viceversa. En Solidity podemos asignar un literal de cadena a una variable de tipo byte32 fácilmente. Solidity lo considera como un byte32 literal.

pragma solidity ^0.5.0;

contract SolidityTest {
   bytes32 data = "test";
}

Personajes de escape

No Señor. Descripción del personaje
1

\n

Inicia una nueva línea.

2

\\

Barra invertida

3

\'

Una frase

4

\"

Cotización doble

5

\b

Retroceso

6

\f

Alimentación de formulario

7

\r

Retorno de carro

8

\t

Lengüeta

9

\v

Lengüeta vertical

10

\xNN

Representa el valor hexadecimal e inserta los bytes correspondientes.

11

\uNNNN

Representa el valor Unicode e inserta la secuencia UTF-8.

Conversión de bytes a cadenas

Los bytes se pueden convertir a String usando el constructor string ().

bytes memory bstr = new bytes(10);
string message = string(bstr);

Ejemplo

Pruebe el siguiente código para comprender cómo funciona la cadena en 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);
   }
}

Ejecute el programa anterior siguiendo los pasos proporcionados en el capítulo Primera aplicación de Solidity.

Salida

0: string: 3