Arrays 如何将一个双精度数组转换为字符串,Swift
我有一个双打的数组。如何将其转换为控制台上打印的单个字符串 我需要创建一个函数,该函数接受一个double数组作为参数,并返回一个string对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接到一个String对象中。但我不知道该怎么做Arrays 如何将一个双精度数组转换为字符串,Swift,arrays,xcode,swift,Arrays,Xcode,Swift,我有一个双打的数组。如何将其转换为控制台上打印的单个字符串 我需要创建一个函数,该函数接受一个double数组作为参数,并返回一个string对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接到一个String对象中。但我不知道该怎么做 var array1 = [2.6, 6.7, 7.2, 4.1, 3.1] var array2 = [1.2, 3.5, 2.8, 4.5, 6.4] var array3 = [1.2, 1.3, 1.4, 1.5, 1.6] var neste
var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]
var nestedArray = [array1, array2, array3]
这是我的密码。。。但我不知道如何做一个for循环来给我答案
func nestedFunction(nestedArray: [[Double]]) -> String {
var stringVar: String = ""
( for loop here... )
return stringVar
}
print(nestedArrayFunction(nestedArray))
预期的输出应该是一个字符串对象,没有括号,因此您可以使用它的属性:
nestedArray.description
输出:
[[2.600000000000001,6.70000000000002,7.2000000000000002,4.0999999999996,3.10000000000001],[1.2,3.5,2.799999999999998,4.5,6.400000000000004],[1.2,1.3,1.3999999999999999,1.5,1.600000000000001]]
这是常规函数用于打印此类数组的内容。首先,您需要连接或组合现有的数组。您只需创建另一个数组就可以做到这一点,如下所示
let fullArray = array1 + array2 + array3
接下来,您可以打印完整的数组
print(fullArray)
这会给你一些
[2.6000000000000001, 6.7000000000000002, 7.2000000000000002, 4.0999999999999996, 3.1000000000000001, 1.2, 3.5, 2.7999999999999998, 4.5, 6.4000000000000004]
或者可以使用.joinWithSeparator(string:string)方法创建此数组的字符串表示形式,如下所示
let stringRepresentation = fullArray.joinWithSeparator(",")
print(stringRepresentation)
希望这有帮助
如果您希望它不带括号:
let string = nestedArray.flatMap { (array) in
array.flatMap { String($0) }.joinWithSeparator(",")
}.joinWithSeparator(",")
输出:
"2.6,6.7,7.2,4.1,3.1,1.2,3.5,2.8,4.5,6.4,1.2,1.3,1.4,1.5,1.6"
请注意,使用
,
作为分隔符不是本地化证明,在法语区域设置中会产生类似“2,6,6,7,7,2”等字符串。根据您问题中的描述,嵌套函数(…)
的参数似乎应该是一个具有双值元素的数组([[double]]
)而不是包含双值元素的数组([double]
)
您可以使用.flant()
在nestedFunction(…)
中简单嵌套数组nestedArray
,然后,例如reduce
将展平数组的双值元素转换为一个包含字符串的元素
var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]
var nestedArray = [array1, array2, array3]
func nestedFunction (nestedArray: [[Double]])-> String {
return String(nestedArray
.flatten()
.reduce("") { $0 + ", " + String($1) }
.characters.dropFirst(2))
}
let asString = nestedFunction(nestedArray)
// asString = "2.6, 6.7, 7.2, 4.1, 3.1, 1.2, 3.5, 2.8, 4.5, 6.4, 1.2, 1.3, 1.4, 1.5, 1.6"
另一种选择是,如果设置为使用for
循环,则可以使用for。。。在展平阵列上的
,例如:
var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]
var nestedArray = [array1, array2, array3]
func nestedFunction (nestedArray: [[Double]])-> String {
var stringVar: String = ""
var isFirstElement = true
for elem in nestedArray.flatten() {
stringVar += (isFirstElement ? "" : ", ") + String(elem)
isFirstElement = false
}
return stringVar
}
let asString = nestedFunction(nestedArray)
// asString = "2.6, 6.7, 7.2, 4.1, 3.1, 1.2, 3.5, 2.8, 4.5, 6.4, 1.2, 1.3, 1.4, 1.5, 1.6"
请注意,由于浮点精度有限,在使用直接字符串初始值设定项(String($1)
和String(elem))时,某些双精度值可能会以“凌乱”的String
表示结束(例如2.6
可能会以2.6000000000000001
结束)
分别在第一种和第二种方法中)。要兑换此值,您可以使用以下字符串
初始值设定项为您的双
值的字符串
表示设置固定数量的小数位数:
String(format: "%.3f", myDoubleValue)
/* \
number of fraction digits (3 here) */
例如,将上述方法中的String($1)
和String(elem)
分别替换为String(格式:“%.3f”、$1)
和String(格式:“%.3f”,elem)
。Double
值将四舍五入到提供的分数位数。您能告诉我们预期的输出吗?是的,我也很困惑。我需要创建一个函数,该函数接受一个double数组作为参数,并返回一个string对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接到一个String对象中。但我不知道该怎么做。在上面的例子中,你期望的结果是什么?@VeronicaG很乐意帮忙!