0
私はこのプログラムを持っていると私は2つの文字列の間の数字を抽出しようとしていますが、私は(下記見せる)私はsubstringWithRange
機能Rangeやその他の方法論を使用してSwiftの文字列から部分文字列を抽出する方法は?
コンパイル時エラーを使用する場合、コンパイル時エラーを取得しています:
/Users/chandeln/Documents/ApplePaySwag-Starter/ApplePaySwag/BuySwagViewController.swift:382:47: Cannot convert value of type 'Range<Int>' to expected argument type 'Range<Index>' (aka 'Range<String.CharacterView.Index>')
を
コード:
let text = "[DeviceAccountNumber-Start]4817499130007700[DeviceAccountNumber-End]"
//get the position of the start string
let danStartTagRange: Range<String.Index> = text.rangeOfString("[DeviceAccountNumber-Start]")!
let danStartTagIndex: Int = text.startIndex.distanceTo(danStartTagRange.startIndex)
let danStartTagEndingIndex: Int = text.startIndex.distanceTo(danStartTagRange.endIndex)
print("danStartTagRange = \(danStartTagRange)")
print("danStartTagIndex = \(danStartTagIndex)")
print("danStartTagEndingIndex = \(danStartTagEndingIndex)")
//get the position of the end string
let danEndTagRange: Range<String.Index> = text.rangeOfString("[DeviceAccountNumber-End]")!
let danEndTagIndex: Int = text.startIndex.distanceTo(danEndTagRange.startIndex)
let danEndTagEndingIndex: Int = text.startIndex.distanceTo(danEndTagRange.endIndex)
print("danEndTagRange = \(danEndTagRange)")
print("danEndTagIndex = \(danEndTagIndex)")
print("danEndTagEndingIndex = \(danEndTagEndingIndex)")
let rangeOfDan = danStartTagEndingIndex..<danEndTagIndex
//get the actual dan now based on the above derived variables
let dan = text.substringWithRange(rangeOfDan)
let dan = substringFromIndex(danStartTagEndingIndex);
print("dan = \(dan)")
以前の実行からの出力:
danStartTagRange = 0..<27
danStartTagIndex = 0
danStartTagEndingIndex = 27
danEndTagRange = 43..<68
danEndTagIndex = 43
danEndTagEndingIndex = 68
私が案内してください
Swift 2.3
を使用しています。
その他の方法論は、正規表現です: '」 \\ d + "' – vadian