diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ + diff --git a/string/moon.pkg.json b/string/moon.pkg.json index 54f85bf2..19aade80 100644 --- a/string/moon.pkg.json +++ b/string/moon.pkg.json @@ -3,6 +3,7 @@ "moonbitlang/core/builtin", "moonbitlang/core/assertion", "moonbitlang/core/coverage", - "moonbitlang/core/bytes" + "moonbitlang/core/bytes", + "moonbitlang/core/char" ] } diff --git a/string/string.mbt b/string/string.mbt index 8245b12a..956d86d6 100644 --- a/string/string.mbt +++ b/string/string.mbt @@ -91,3 +91,23 @@ test "Buffer::to_bytes" { buffer.write_string("中文") @assertion.assert_eq(buffer.to_bytes().to_string(), "中文")? } + +/// Converts the String into an array of Chars. +pub fn to_array(self : String) -> Array[Char] { + let len = self.length() + let rv = Array::make(len, '\x00') + for i = 0; i < len; i = i + 1 { + rv[i] = self[i] + } + rv +} + +test "to_array" { + let a = "你好!mbt".to_array() + inspect(a[0], ~content="你")? + inspect(a[1], ~content="好")? + inspect(a[2], ~content="!")? + inspect(a[3], ~content="m")? + inspect(a[4], ~content="b")? + inspect(a[5], ~content="t")? +}