2016-08-02 8 views
1

私は非常に迅速な言語に新しいです。私は与えられたStringからNSRangeを取る必要があるビジネスロジックを実行しています。NSRangeを迅速に使用するには?

ここに私の要件は、 与えられた量= "144.44" NSRangeの部分が "

これを行うためのAPIはありますか?

+0

http://nshipster.com/nsrange/ –

+0

あなたが何を求めているかわからない。 2つの整数を入力として取り、範囲を返す 'NSMakeRange'関数があります。または、文字列を検索し、部分文字列を表す 'NSRange'を返す方法を尋ねていますか? –

+0

または、部分文字列から' NSRange'または 'Range 'が本当に必要ですか? ?それはあなたがそれをどうしようとしているかによって異なります。 – Abizern

答えて

5

あなたは範囲を見つけるために、正規表現ベースの検索を行うことができます。

let str : NSString = "123.45" 
let rng : NSRange = str.range("(?<=[.])\\d*$", options: .RegularExpressionSearch) 

正規表現"(?<=[.])\\d*$"、「ルック背後経由ドット文字'.'を以下のゼロ以上の数字を意味の最後にすべての方法文字列$。 "

+0

OPは 'String'型を使うので、型キャストが必要ですが、解決策は素晴らしいです。 –

1

あなたが与えられたstringからsubstringをしたい場合は、componentsSeparatedByString

例使用することができます、あなたのようにコンポーネントを取得することができます

var number: String = "144.44"; 
var numberresult= number.componentsSeparatedByString(".") 

を:

var num1: String = numberresult [0] 
var num2: String = numberresult [1] 

それは助けを願って!

0

使用rangeOfStringsubstringFromIndex

let string = "123.45" 
if let index = string.rangeOfString(".") { 
    let cents = string.substringFromIndex(index.endIndex) 
    print("\(cents)") 
} 
0

スウィフト範囲を使用して別のバージョンではなく、NSRange

オプションの範囲を返す関数定義:あなたがテストすることができます

func centsRangeFromString(str: String) -> Range<String.Index>? { 
    let characters = str.characters 
    guard let dotIndex = characters.indexOf(".") else { return nil } 

    return Range(dotIndex.successor() ..< characters.endIndex) 
} 

をwith:

let r = centsRangeFromString(str) 
// I don't recommend force unwrapping here, but this is just an example. 
let cents = str.substringWithRange(r!) 

Playground example

関連する問題