7

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]")
0

2 Answers 2

4

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);
4
  • Where did the variable burl come from? May 23, 2018 at 0:21
  • And I'm getting the error: TypeError: Exactly one argument expected for explicit type conversion. string memory query = string( burl_1.length, burl_2.length, burl_3.length, burl_4.length, burl_5.length, burl_6.length, burl_7.length); May 23, 2018 at 0:33
  • Hi @JohnDeBord, you have to first declare byte memory burl = bytes(url); and for the second error it should be + not , needed. I'll correct them in the example May 23, 2018 at 0:37
  • 2
    sorry @AchalaDissanayake thought I could accept both - I just undid it :) May 23, 2018 at 7:57
4
+50

As the accepted answer says, this is basically a string concatenation problem. Sometimes using library for that might be efficient as some answers suggested here.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.