我想将字符串中包含的字母的索引转换为整数值。尝试读取头文件,但找不到的类型Index
,尽管它似乎符合ForwardIndexType
使用方法的协议(例如distanceTo
)。
var letters = "abcdefg"
let index = letters.characters.indexOf("c")!
// ERROR: Cannot invoke initializer for type 'Int' with an argument list of type '(String.CharacterView.Index)'
let intValue = Int(index) // I want the integer value of the index (e.g. 2)
任何帮助表示赞赏。
编辑/更新:
Xcode 11•Swift 5.1或更高版本
extension StringProtocol {
func distance(of element: Element) -> Int? { firstIndex(of: element)?.distance(in: self) }
func distance<S: StringProtocol>(of string: S) -> Int? { range(of: string)?.lowerBound.distance(in: self) }
}
extension Collection {
func distance(to index: Index) -> Int { distance(from: startIndex, to: index) }
}
extension String.Index {
func distance<S: StringProtocol>(in string: S) -> Int { string.distance(to: self) }
}
游乐场测试
let letters = "abcdefg"
let char: Character = "c"
if let distance = letters.distance(of: char) {
print("character \(char) was found at position #\(distance)") // "character c was found at position #2\n"
} else {
print("character \(char) was not found")
}
let string = "cde"
if let distance = letters.distance(of: string) {
print("string \(string) was found at position #\(distance)") // "string cde was found at position #2\n"
} else {
print("string \(string) was not found")
}
问题内容: 我在这里经历了十分钟的挣扎和失败,我屈服了。我需要在Swift中将Int转换为Character并无法解决。 题 如何在Swift中将( 整数 )( 铸造 )转换为( 字符 )? 说明性问题/任务挑战 生成一个for循环,该循环打印字母“ A”至“ Z”,例如: 问题答案: 您不能将整数直接转换为实例,但是可以将整数从转换为并再次返回:
问题内容: 我正在尝试找出如何在Swift中将转换为。 我想出一种解决方法,但是我很想弄清楚如何在Swift中做到这一点。 问题答案: 转换为: 而另一种方式-转换为: 或者,如果您使用的是Swift 2或3:
问题内容: 我想将转换成斯威夫特。像这样的基本转换不起作用,因为这些类型不是基元,这与Objective-C中的s和s 不同 但这会产生以下错误消息: “浮点数”不可转换为“整数” 知道如何将属性从转换为吗? 问题答案: 您可以转换到斯威夫特这样的: 您还可以使用@paulm的注释来实现此结果:
问题内容: 我只想将一个 字符 转换为 Int 。 这应该很简单。但是我没有发现前面的答案有帮助。总是有一些错误。也许是因为我正在Swift 2.0中进行尝试。 问题答案: 在Swift 2.0 等中,已被初始化程序取代。(在这种情况下,。) 因为并非所有字符串都可以转换为int,所以此初始化程序是有 问题的 ,这意味着它返回一个 可选的int ()而不是一个返回。最好的办法是使用来包装此可选内容
我正在尝试如何在Swift中将转换为。 我想出了一个变通方法,使用但是我想知道如何在Swift中完成这一切。
问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon