如何创建格式化的字符串?

30 浏览
0 Comments

如何创建格式化的字符串?

我需要创建一个格式化的字符串,可以将Int、Int64、Double等类型转换为String。使用Objective-C,我可以这样做:\nlet str = String(format: \"%d, %f, %ld, %@\",\n INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE, STRING_VALUE)\n在Swift中如何做到相同的效果呢?

0
0 Comments

在Swift的早期版本中,还没有实现类似于Objective-C中的`-stringWithFormat:`方法。因此,这个问题的出现是因为使用`\()`语法无法实现字符串的格式化。使用`\()`语法,无法控制浮点数的小数位数。

然而,虽然这个问题没有明确要求格式化,但根据提问者提到的`-stringWithFormat:`方法,他可能希望能够实现格式化输出。在Swift中,可以使用`String(format:arguments:)`方法来实现格式化输出。

因此,解决这个问题的方法是使用`String(format:arguments:)`方法来创建带有格式的字符串。具体的解决方法如下所示:

let str = String(format: "%d, %.2f, %.2f, %@", INT_VALUE, FLOAT_VALUE, DOUBLE_VALUE, STRING_VALUE)

这样,就可以创建一个带有格式的字符串,其中`%d`表示整数类型,`%.2f`表示浮点数类型保留两位小数,`%@`表示字符串类型。

需要注意的是,这个方法需要提供一个格式字符串`"%d, %.2f, %.2f, %@"`,并且按照格式字符串的顺序提供相应的参数。

值得一提的是,这个问题的提问日期较早,当时Swift的API还没有添加类似于Objective-C的`-stringWithFormat:`方法。因此,这个问题的解决方法是在当时的Swift版本中较为常见的做法。

然而,随着Swift的发展,后续版本中已经添加了`String(format:arguments:)`方法,可以更方便地实现字符串的格式化输出。因此,在未来搜索类似问题时,应该优先考虑使用较新的方法。

0
0 Comments

在上述内容中,出现了一个问题:如何创建一个带有格式的字符串?

出现这个问题的原因可能是因为用户想要将不同的数据类型插入到一个字符串中,并且希望按照特定的格式进行展示。

解决这个问题的方法是使用字符串的格式化功能。在给定的示例中,可以看到使用了NSString的format方法。这个方法使用了一个格式化字符串作为参数,其中包含了%d、%f、%ld和%@这些占位符。这些占位符分别代表了整数、浮点数、长整数和字符串类型的数据。

在格式化字符串中,这些占位符会被对应的变量值所替代。通过在format方法中传入这些变量值,可以得到一个带有格式的字符串。

需要注意的是,格式化字符串中的占位符要与对应的变量类型相匹配,否则可能会导致错误。例如,如果将一个字符串类型的变量传递给%d占位符,就会发生错误。

总结起来,要创建一个带有格式的字符串,可以使用NSString的format方法,并在格式化字符串中使用占位符来代表不同类型的变量值。通过传入对应的变量值,可以得到一个按照指定格式展示的字符串。

0
0 Comments

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

有人问到如何创建一个格式化的字符串,以下是一个解决方法:

import Foundation

let timeNow = time(nil)

let aStr = String(format: "%@%x", "timeNow in hex: ", timeNow)

print(aStr)

这个方法是从`Foundation`框架中的`NSString`类中获取的。因此,你需要导入`Foundation`库以使其正常工作。否则,表达式将调用`String.init(T)`,并且它会产生类似于`"(\"%@%x %x\", 10)"`的结果。

那么`%@%x`这些符号是什么意思呢?你可以参考这个资源了解更多信息:[developer.apple.com/library/content/documentation/Cocoa/…](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1)

0