以下代码返回错误,并指出语法已弃用。更改字符串中字符的正确方法是什么?
let hello = "Hello!" ;;
hello.[1] <- 'a' ;;
Alert deprecated: Stdlib.String.set
Use Bytes.set instead.
Error: This expression has type string but an expression was expected of type
bytes
字符串是不可变的(或者至少很快它们会是不可变的(,因此您无法更改其内容。当然,您可以创建一个字符串的副本,其中一个字符不同,例如,
let with_nth_char m c =
String.mapi (fun i b -> if i = m then c else b)
和
# with_nth_char 1 'E' "hello";;
- : string = "hEllo"
但是,如果您需要更改数组中的字符,则不应使用string
数据类型,而应依赖bytes
这是一种可变字符串的类型。 您可以使用Bytes.of_strings
和Bytes.to_string
将字符串转换为字节,反之亦然。