如何用格式创建一个字符串?

Apu*_*urv 175 ios swift ios8

我需要创建一个格式的字符串,可以将int,long,double等类型转换为字符串.使用Obj-C,我可以通过以下方式完成.

NSString *str = [NSString stringWithFormat:@"%d , %f, %ld, %@", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE, STRING_VALUE];
Run Code Online (Sandbox Code Playgroud)

如何用swift做同样的事情?

rea*_*one 364

我想这可以帮到你:

let timeNow = time(nil)
let aStr = String(format: "%@%x", "timeNow in hex: ", timeNow)
print(aStr)
Run Code Online (Sandbox Code Playgroud)

  • @bibscy https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1 (4认同)
  • 你会链接到文档吗?我无法追踪它. (3认同)
  • 这个方法来自于`基础`框架中的[`NSString`](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instm /的NSString/initWithFormat :).所以你必须`导入Foundation`才能使它正常工作.否则表达式将调用`String.init <T>(T)`,它将产生类似`"("\"%@%x%x \",10)"`而不是. (3认同)

Bry*_*hen 78

没什么特别的

let str = NSString(format:"%d , %f, %ld, %@", INT_VALUE, FLOAT_VALUE, LONG_VALUE, STRING_VALUE)
Run Code Online (Sandbox Code Playgroud)


Joh*_*pia 43

let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE), \(STRING_VALUE)"
Run Code Online (Sandbox Code Playgroud)

更新:我在Swift String(format:)添加到它的API 之前写了这个答案.使用最佳答案给出的方法.

  • 我不认为这实际上回答了这个问题,因为没有格式化.使用此方法,您无法格式化浮点数中的小数位数.使用`String(format:arguments:)`更适合添加格式 (6认同)
  • OP没有要求任何格式化,只是一种方法*创建一个格式的字符串,可以将int,long,double等类型转换为字符串*. (4认同)

Dur*_*nat 37

不需要NSString!

String(format: "Value: %3.2f\tResult: %3.2f", arguments: [2.7, 99.8])
Run Code Online (Sandbox Code Playgroud)

要么

String(format:"Value: %3.2f\tResult: %3.2f", 2.7, 99.8)
Run Code Online (Sandbox Code Playgroud)


Lan*_*ark 15

我认为两者都有

let str = String(format:"%d, %f, %ld", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE)
Run Code Online (Sandbox Code Playgroud)

let str = "\(INT_VALUE), \(FLOAT_VALUE), \(DOUBLE_VALUE)"
Run Code Online (Sandbox Code Playgroud)

因为用户询问了格式化并且这两种情况符合他们的要求,所以都是可以接受的:

我需要创建一个格式的字符串,可以将int,long,double等类型转换为字符串.

显然,前者允许比后者更精细地控制格式,但这并不意味着后者不是可接受的答案.


App*_*ple 5

var str = "\(INT_VALUE) , \(FLOAT_VALUE) , \(DOUBLE_VALUE), \(STRING_VALUE)"
Run Code Online (Sandbox Code Playgroud)


iPa*_*tel 5

首先阅读Swift语言的官方文档.

答案应该是

var str = "\(INT_VALUE) , \(FLOAT_VALUE) , \(DOUBLE_VALUE), \(STRING_VALUE)"
println(str)
Run Code Online (Sandbox Code Playgroud)

这里

1)默认为任何浮点值 double

EX.
 var myVal = 5.2 // its double by default;
Run Code Online (Sandbox Code Playgroud)

- >如果要显示浮点值,则需要明确定义如a

 EX.
     var myVal:Float = 5.2 // now its float value;
Run Code Online (Sandbox Code Playgroud)

这一点要清楚得多.