如何将一个整数(如“20190331”)格式化为“2019-03-31”,而不先将其转换为日期而不使用子字符串将其拆分。日期在SQLite(SQFlite)中存储为整数。我想在1行中做这样的(伪代码)注意:整数:
(pseudo) String sDate = fmt("####'-'##'-'##", map["DueDate"]);
我知道我可以这样做:
String sDate = map["DueDate"].toString();
sDate = sDate.substring(0,4)+'-'+sDate.substring(4,6)+'-'+sDate.substring(6,8);
然而,这是两行代码,Visual Studio代码在格式化时将其转换为8行,我喜欢保持代码紧凑。
编写一个名为fmt
的函数,并在伪代码中调用它。
String fmt(String f, int i) {
StringBuffer sb = StringBuffer();
RuneIterator format = RuneIterator(f);
RuneIterator input = RuneIterator(i.toString());
while (format.moveNext()) {
var currentAsString = format.currentAsString;
if (currentAsString == '#') {
input.moveNext();
sb.write(input.currentAsString);
} else {
sb.write(currentAsString);
}
}
return sb.toString();
}
一条线:
print(fmt('####-##-##', 20190331));