如何从整数序列构造String实例?

Kwa*_*aku 4 string unicode smalltalk squeak pharo

我想从Unicode代码点创建一个测试字符串

像这样的东西

 65 asCharacter asString,
 66 asCharacter asString,
 67 asCharacter asString,
 65 asCharacter asString,
769 asCharacter asString
Run Code Online (Sandbox Code Playgroud)

要么

String with: 65 asCharacter
       with: 66 asCharacter
       with: 67 asCharacter
       with: 65 asCharacter
       with: 769 asCharacter
Run Code Online (Sandbox Code Playgroud)

这有效

我正在寻找一种方法将整数值数组转换为类String的实例.

#(65 66 67 65 769)
Run Code Online (Sandbox Code Playgroud)

有内置的方法吗?我正在寻找这样的答案在Smalltalk实现中测试Unicode支持的正确方法是什么?一个,但对于字符串.

Pet*_*nak 8

很多种方法

1. #streamContents:

如果您正在执行更大的字符串连接/构建,请使用流,因为它更快.如果只是连接几个字符串使用更可读的东西.

String streamContents: [ :aStream |
    #(65 66 67 65 769) do: [ :each |
        aStream nextPut: each asCharacter
    ]
]
Run Code Online (Sandbox Code Playgroud)

要么

String streamContents: [ :aStream |
    aStream nextPutAll: (#(65 66 67 65 769) collect: #asCharacter)
]
Run Code Online (Sandbox Code Playgroud)

2. #withAll:

String withAll: (#(65 66 67 65 769) collect: #asCharacter)
Run Code Online (Sandbox Code Playgroud)

3. #collect:as:String

#(65 66 67 65 769) collect: #asCharacter as: String
Run Code Online (Sandbox Code Playgroud)

4. #joinUsing:字符

(#(65 66 67 65 769) collect: #asCharacter) joinUsing: ''
Run Code Online (Sandbox Code Playgroud)

注意:

至少在Pharo你可以使用[ :each | each selector ],或只是简单地使用#selector.我发现后者对于简单的事情更具可读性,但这可能是个人偏好.