Kode berikut mengembalikan kesalahan dan mengatakan bahwa sintaks tidak digunakan lagi. Apa cara yang benar untuk mengubah karakter dalam sebuah string?

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
0
user9145571 28 Mei 2020, 16:49

1 menjawab

Jawaban Terbaik

String tidak dapat diubah (atau setidaknya segera), jadi Anda tidak dapat mengubah isinya. Anda tentu saja dapat membuat salinan string dengan satu karakter yang berbeda, mis.,

let with_nth_char m c = 
  String.mapi (fun i b -> if i = m then c else b)

Dan

# with_nth_char 1 'E' "hello";;
- : string = "hEllo"

Tetapi jika Anda perlu mengubah karakter dalam array maka Anda tidak boleh menggunakan tipe data string tetapi mengandalkan bytes yang merupakan tipe untuk string yang dapat diubah. Anda dapat menggunakan Bytes.of_strings dan Bytes.to_string untuk menerjemahkan string ke byte dan sebaliknya.

2
ivg 28 Mei 2020, 17:32