2016-12-02 49 views
0

目前我正在试图在操场上混淆这一点之前,我的实际代码中实现了一些这样的版本。我正在尝试取一个字符串并打印出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

Cannot invoke initializer for type 'Range<String.Index>' with an argument list of type '(start: String.Index, end: String.Index)'

任何援助非常感谢,我很抱歉,如果它是一个简单的修复。

回答

1

下面是做这件事:

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 
+2

swiftConventionIsToUseCamelCase不snake_case – Alexander

+0

完美,我可以使这项工作就像我想与原来的代码。非常感谢你 – Anavas