我想将正号码转换为相应的数字列表 - 数字也应该是Ints。
转换时,比如1024,它应该返回[1,0,2,4]
答案 0 :(得分:6)
在Swift2和Swift3中
function GetPictureFromBitmap([System.Drawing.Bitmap]$bitmap)
{
$converter = New-Object -TypeName System.Drawing.ImageConverter
$byte_vec = New-Object -TypeName TagLib.ByteVector -ArgumentList $converter.ConvertTo($bitmap, [byte[]])
$picture = New-Object -TypeName TagLib.Picture -ArgumentList $byte_vec
$picture_list = New-Object TagLib.IPicture[] 1
$picture_list[0] = $picture
return $picture_list
}
$refs = @(
"c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Drawing.dll",
"d:\taglib-sharp.dll"
)
Add-Type -Path $refs
# Load MP3 file
$media = [TagLib.File]::Create("C:\MusicFile.mp3")
# Load picture into System.Drawing.Image
[Bitmap]$pic = [System.Drawing.Image]::FromFile("C:\MyAlbumArt.jpg")
# Add picture to MP3
$media.Tag.Pictures = GetPictureFromBitmap($pic)
# Save Mp3
$media.Save()
在Swift4中
let number = 1024
let digits = String(number).characters.flatMap { Int(String($0)) }
print(digits) // [1, 0, 2, 4]
答案 1 :(得分:2)
您不需要先将其转换为数组。由于字符串是集合,因此您可以使用map的免费(非成员)版本:
map(number) { String($0).toInt() }
但要注意你的!
。如果number包含非数字数字,则代码将在运行时崩溃。如果数字为负数,则以“ - ”开头。
您希望如何处理这取决于您想要对负数做什么(可能您希望所有数字都为负数)。但如果你只是想抛弃领先的“ - ”,你可以做类似的事情:
let strNum = number >= 0 ? String(number) : dropFirst(String(number))
let digits = map(strNum) { String($0).toInt()! }
但是,如果有一个整数字符串表示的另一个可能的非数字字符,你可能会发现它更好:
let digits = map(String(number)) { String($0).toInt() }.filter { $0 != nil }.map { $0! }
答案 2 :(得分:1)
在使用Swift REPL进行一些搜索和一些试错法后,我想出了这个
var digits:[Int] = Array(String(number)).map { String($0).toInt()! }
请注意,!
至关重要