Strip control codes and extended characters from a string: Difference between revisions
Content added Content deleted
No edit summary |
(added ocaml) |
||
Line 283: | Line 283: | ||
<pre> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ |
<pre> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ |
||
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</pre> |
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</pre> |
||
=={{header|OCaml}}== |
|||
<lang ocaml>let is_control_code c = |
|||
let d = int_of_char c in |
|||
d < 32 || d = 127 |
|||
let is_extended_char c = |
|||
let d = int_of_char c in |
|||
d > 127 |
|||
let strip f str = |
|||
let len = String.length str in |
|||
let res = String.create len in |
|||
let rec aux i j = |
|||
if i >= len then String.sub res 0 j else |
|||
if f str.[i] |
|||
then aux (succ i) j |
|||
else begin |
|||
res.[j] <- str.[i]; |
|||
aux (succ i) (succ j) |
|||
end |
|||
in |
|||
aux 0 0 |
|||
let () = |
|||
let len = 32 in |
|||
let s = String.create len in |
|||
Random.self_init(); |
|||
for i = 0 to pred len do |
|||
s.[i] <- char_of_int (Random.int 255) |
|||
done; |
|||
print_endline (strip is_control_code s); |
|||
print_endline (strip (fun c -> (is_control_code c) || (is_extended_char c)) s); |
|||
;;</lang> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |