From: Jean-Francois M. <je...@ra...> - 2008-10-24 12:40:35
|
Hello, I'm trying to make a string replace in a liq file. My syntax is string.replace(pattern="_", " ", description) So I try to replace _ by space in the description variable but it doesn't work. Any idea ? TIA, Jef |
From: Alexandru M. <ale...@gm...> - 2014-05-28 10:56:20
|
Hi! I tried to use string.replace on a utf-8 string but the returned string contains weird characters. Is this function utf-8 safe? Any other solution? Without this function the string is sent ok to icecast. Alex |
From: Romain B. <to...@ra...> - 2008-10-24 12:52:05
|
Le Friday 24 October 2008 10:27:47 Jean-Francois Mauguit, vous avez écrit : > Hello, Hi again ! > I'm trying to make a string replace in a liq file. > > My syntax is > string.replace(pattern="_", " ", description) > > So I try to replace _ by space in the description variable but it > doesn't work. > > Any idea ? Yep :) string.replace may handle powerfull matching via regular expressions, like [\w]{4} which will replace all sequence of 4 alphanumerical characters. Hence, the replaced string may not be static. Instead, you should pass a function to which the matched stirng is passed and that returns the replaced string. For instance, a correct implemtation of your needs is: def f(x) = " " end bla = string.replace(pattern="_",f,bla) Or, alternatively: bla = string.replace(pattern="_",fun (_) -> " ",bla) For means of simplicity, you may also define a new operator: def string.replace.static(~pattern,r,s) = string.replace(pattern=pattern,fun (_) -> r,s) end More generaly, you may put all your custom operators in a seperate custom.liq file, and include them in your scripts, using %include custom.liq Of course, new operators that you find very usefull may be considered for inclusion into the standard set of operators, which may include string.replace.static for instance.. :) Romain |
From: David B. <dav...@gm...> - 2008-10-24 12:54:18
|
Hi Jean-François, That question is easy, so I'll answer it. I'll look at your other problem next week, unless other devs find out before. The solution for you: $ src/liquidsoap 'print(string.replace(pattern="_",(fun (s) -> " "),"bla_bla"))' bla bla The error was that the string.replace function takes as parameter not a string, but a function from string to string. From liquidsoap -h string.replace: Type: (~pattern:string, ((string)->string), string)->string This allows for example, to replace any character by twice the same: $ src/liquidsoap 'print(string.replace(pattern=".",(fun (s) -> s^s),"bla_bla"))' bbllaa__bbllaa Have fun, -- David PS: Hi Romain :) now I'll go read your answer which just arrived... |
From: Jean-Francois M. <je...@ra...> - 2008-10-24 13:09:27
|
Thanks to all, it's working :-) Jef On 24 Oct 2008, at 14:54, David Baelde wrote: > Hi Jean-François, > > That question is easy, so I'll answer it. I'll look at your other > problem next week, unless other devs find out before. > > The solution for you: > $ src/liquidsoap 'print(string.replace(pattern="_",(fun (s) -> " > "),"bla_bla"))' > bla bla > > The error was that the string.replace function takes as parameter > not a string, but a function from string to string. From liquidsoap - > h string.replace: > Type: (~pattern:string, ((string)->string), string)->string > This allows for example, to replace any character by twice the same: > $ src/liquidsoap 'print(string.replace(pattern=".",(fun (s) -> > s^s),"bla_bla"))' > bbllaa__bbllaa > > Have fun, > -- > David > > PS: Hi Romain :) now I'll go read your answer which just arrived... |