val finish = fn s:b2s(map( less(split(s, by="%"), of=1), by=fn x:number(x, fmt=16), )) val decode = fn s:replace( s, by=re/(%[0-9A-Fa-f]{2})+/, with=finish, ) writeln decode("https%3A%2F%2Fno%20more%20foo%20bars%20please%2F") writeln decode("google.com/search?q=%22unbroken%20string%22")