2016-04-26 58 views
2

我有一段java代码。Swift等价于String.format和.Replace?

functionReturnValue = String.format("%1$2s", jDay).replace(' ', '0') + "/" + String.format("%1$2s", i).replace(' ', '0') + "/" + dateIn.substring(0, 4); 

什么是快速等值? 这是我在斯威夫特和Java中至今

let string1 = String(format: "%1$2s", jDay); 
let replacedString = String(string1.characters.map{$0 == " " ? "0" : $0}) 
let string2 = String(format: "%1$2s", i); 
let replacedString2 = String(string2.characters.map{$0 == " " ? "0" : $0}) 
let string3 = dateIn[year]; 
let stringFinal = replacedString + "/" + replacedString2 + "/" + string3; 

回答

2

格式字符串是不同的,所以你不能为你的格式使用%1$2s。另外,由于您的Java代码中的replace的调用可以添加前导零,因此可以用格式调用替换它。最后,使用string interpolation构建最终的字符串:

let s1 = String(format: "%02d", jDay) 
let s2 = String(format: "%02d", i) 
let s3 = dateIn[year] 
let stringFinal = "\(s1)/\(s2)/\(s3)" 
+0

我刚刚从java中快速进入。看起来我仍然需要学习一些新的语法。感谢您的洞察力! –

+0

如果其他人看着这个,并认为你需要一次格式化一个值,情况并非如此。例如: –

0

以防万一你想知道(像我),你可以有多个转换格式字符串,如:

let hourPart = 5 
let minutePart = 8 
let isPm = true 
let retStr = String(format: "%d:%02d %@", hourPart, minutePart, isPm ? "PM" : "AM") 

给出了“5: 08 PM“