[Ethereum] How to put a variable inside a string in solidity


Does anyone know how to do this, I want to put a variable inside a string:

currently using:

 oraclizeID = oraclize_query("URL","json(https://opensky-network.org/api/states/all?icao24=a4dad4).states[0][8]");

Trying to put the varaible into the string as shown below, but it's not working:

string public id = 'a4dad4';
oraclizeID = oraclize_query("URL","json(https://opensky-network.org/api/states/all?icao24="id").states[0][0]")

Best Answer

This would work if you do string concatenation. You may refer this question for string concatenation in solidity. The code may look like follow for string concatenation.

url_1 = "json(https://opensky-network.org/api/states/all?icao24";
url_2 = id;
url_3 = ")states[0][0]"

bytes memory burl_1 = bytes(url_1);
bytes memory burl_2 = bytes(url_2);
bytes memory burl_3 = bytes(url_3);

string memory url = string(burl_1.length + burl_2.length + burl_3.length);
bytes memory burl = bytes(url);

uint k = 0;
for (uint i = 0; i < burl_1.length; i++) burl[k++] = burl_1[i];
for (i = 0; i < burl_2.length; i++) burl[k++] = burl_2[i];
for (i = 0; i < burl_3.length; i++) burl[k++] = burl_3[i];

url = string(burl);
Related Topic