Using Replace on strings
Frederik
25 May 2013, 20:14Hello my fellow adventurers,
I've gotten stuck on using the Replace function on strings (http://quest5.net/wiki/Replace).
Quest can't compile it though, cause it says it can't find the function 'Replace'. What should I do? Has it been replaced or something?
Thanks in advance!
I've gotten stuck on using the Replace function on strings (http://quest5.net/wiki/Replace).
Quest can't compile it though, cause it says it can't find the function 'Replace'. What should I do? Has it been replaced or something?
Thanks in advance!
george
25 May 2013, 21:04What version of Quest are you using? Replace works for me in 5.4.
You can test it with a Print expression script like,
Add that as an additional script for any command, I used Jump for example. Maybe there's an easier way to test it but I'm new to Quest
.
You can test it with a Print expression script like,
Replace("When you jump we're testing the replace function", "replace", "Replace")
Add that as an additional script for any command, I used Jump for example. Maybe there's an easier way to test it but I'm new to Quest

Sora574
25 May 2013, 22:13Along with what george said, what's the exact error you're getting? Also, are you using the online editor? What's the exact script you're running?
Frederik
26 May 2013, 05:20Still doesn't work - I tried the same as George, but it still gives me an error.
I'm using the offline editor, and as a testcode I now run this:
I don't know what I'm doing wrong here
I'm using the offline editor, and as a testcode I now run this:
<command name="replace">
<pattern>"replace"</pattern>
<script>
Replace("When you jump we're testing the replace function", "replace", "Replace")
</script>
</command>
I don't know what I'm doing wrong here

Sora574
26 May 2013, 07:19Ah, there's your problem.
Replace() is more like an 'expression' function than a normal function. What you're trying to do is use it like a normal function, so you're expecting
to somehow make "String" into "string"... But it doesn't know what to do with that. Instead, you should use something like
which will result in a variable with the string 'string'. Does that make sense?
NOTE: You can also use them inside messages, as well as a few other things, like this:
Replace() is more like an 'expression' function than a normal function. What you're trying to do is use it like a normal function, so you're expecting
Replace ("String", "S", "s")
to somehow make "String" into "string"... But it doesn't know what to do with that. Instead, you should use something like
variable = Replace ("String", "S", "s")
which will result in a variable with the string 'string'. Does that make sense?
NOTE: You can also use them inside messages, as well as a few other things, like this:
msg (Replace("String", "S", "s"))
// This will print 'string'
george
26 May 2013, 17:23That's interesting, there was kind of a hint in the wiki page where it says that Replace 'returns a string'. I guess that means you need to use it where returning the string makes sense.
Sora574
26 May 2013, 18:00george wrote:That's interesting, there was kind of a hint in the wiki page where it says that Replace 'returns a string'. I guess that means you need to use it where returning the string makes sense.Exactly. If you tell it to make a string, but not what to do with it, it just throws an error. It's the same as doing this
if (blah = blah) {
"string"
}

jaynabonne
26 May 2013, 19:03Not sure if this helps but: "Replace" is not visible outside of an expression. It's one of those "funny" expression functions.
If you were to create a function of your own that returns a string and you don't use the returned value, it will work fine. It's just these built-in functions that exhibit that behavior, as they're integrated directly into the expression evaluator.
If you were to create a function of your own that returns a string and you don't use the returned value, it will work fine. It's just these built-in functions that exhibit that behavior, as they're integrated directly into the expression evaluator.
Frederik
27 May 2013, 07:17Thanks you guys. I finally got it to work, thanks to you. Didn't realise I needed to use the command right away, like you said.
Thing is, the result isn't exactly what I was hoping for, so going to change the entire command. Anyway, I learned new things, and that's what matters
Thing is, the result isn't exactly what I was hoping for, so going to change the entire command. Anyway, I learned new things, and that's what matters
