I would like to create a test string from Unicode code points
Something like this
65 asCharacter asString,
66 asCharacter asString,
67 asCharacter asString,
65 asCharacter asString,
769 asCharacter asString
Or
String with: 65 asCharacter
with: 66 asCharacter
with: 67 asCharacter
with: 65 asCharacter
with: 769 asCharacter
This works but
I am looking for a way to convert an array of integer values to an instance of class String.
#(65 66 67 65 769)
Is there a built in method for this? I am looking for an answer like this What is the correct way to test Unicode support in a Smalltalk implementation? one, but for Strings.
Many ways
1. #streamContents:
Use stream if you are doing larger string concatenation/building as it is faster. If just concatenating couple of strings use whatever is more readable.
String streamContents: [ :aStream |
#(65 66 67 65 769) do: [ :each |
aStream nextPut: each asCharacter
]
]
or
String streamContents: [ :aStream |
aStream nextPutAll: (#(65 66 67 65 769) collect: #asCharacter)
]
2. #withAll:
String withAll: (#(65 66 67 65 769) collect: #asCharacter)
3. #collect:as: String
#(65 66 67 65 769) collect: #asCharacter as: String
4. #joinUsing: the characters
(#(65 66 67 65 769) collect: #asCharacter) joinUsing: ''
Note:
At least in Pharo you can use either [ :each | each selector ]
, or just simply #selector
. I find the latter more readable for simple things, but that may be personal preference.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With