斯威夫特子串初始化
问题描述:
目前我正在试图在操场上混淆这一点之前,我的实际代码中实现了一些这样的版本。我正在尝试取一个字符串并打印出4个字符。下面显示的代码,我打算在一个循环中使用,并将开始和结束位置增加4,这就是为什么当前位于起点和终点的变量。之前,我甚至可以到达那里但是,我得到一个错误:斯威夫特子串初始化
error: cannot invoke initializer for type 'Range' with an argument list of type '(start: String.CharacterView.Index, end: String.CharacterView.Index)'
var str_start = 0
var str_end = 4
let sub_str = initial_str.substring(Range<String.Index>(start: initial_str.startIndex.advancedBy(str_start), end: initial_str.endIndex.advancedBy(str_end)))
我已经看过这些资料,但无济于事:
Creating Range<String.Index> from constant Ints
任何援助非常感谢,我很抱歉,如果它是一个简单的修复。
答
下面是做这件事:
let initialString = "foo bar"
let newStartIndex = initialString.index(initialString.startIndex, offsetBy: 1)
let newEndIndex = initialString.index(initialString.endIndex, offsetBy: -1)
let substring = initialString[newStartIndex..<newEndIndex]
// this also works, but it needs `import Foundation`:
// let substring = initialString.substring(with: newStartIndex..<newEndIndex)
print(substring)
输出:
oo ba
swiftConventionIsToUseCamelCase不snake_case – Alexander
完美,我可以使这项工作就像我想与原来的代码。非常感谢你 – Anavas