import Foundation
while let line = readLine()
{
let parts = line.split(separator: ";")
let xh = parts[0]
let scores = parts[1].split(separator:",").map{String($0).trimmingCharacters(in: .whitespaces)}
let cyy = Double(scores[0])!
let sx = Double(scores[1])!
let yy = Double(scores[2])!
let a = String(format: "%.2f",round(cyy * 100)/100)
let b = String(format: "%.2f",round(sx * 100)/100)
let c = String(format: "%.2f",round(yy * 100)/100)
print("The each subject score of No. \(xh) is \(a), \(b), \(c).")
}
-
let scores = parts[1].split(separator:",").map{String($0).trimmingCharacters(in: .whitespaces)}
:将成绩字符串按照逗号,
分割成三个成绩,然后使用map
函数将每个成绩(Substring
类型)转换为String
类型,并去除两端的空白字符。
-
Substring 类型:
Substring
是String
的一个子集,它表示原始字符串的一部分。当你对String
使用split
方法时,返回的是一个Substring
类型的数组,因为split
方法返回的是原字符串的视图,而不是新的String
实例。Substring
可以被用来创建一个新的String
实例,这个过程称为桥接(bridging)。 -
trimmingCharacters:
trimmingCharacters
是String
类型的一个方法,它用于移除字符串开头和结尾的特定字符集。这个方法返回一个新的字符串,它是原字符串的副本,但去除了指定字符集中的字符。 -
in: .whitespaces:
.whitespaces
是CharacterSet
的一个属性,它代表所有空白字符的集合,包括空格、制表符、换行符等。当你在trimmingCharacters
方法中使用in: .whitespaces
参数时,意味着你想要移除字符串两端的所有空白字符。
-
let a = String(format: "%.2f", round(cyy * 100) / 100)
:将第一个成绩四舍五入到两位小数。这里先将成绩乘以 100,使用round
函数四舍五入到最接近的整数,然后再除以 100,最后转换为字符串。(如果不处理数据的话,答案错误)