2016-01-15 3 views
0

Я получаю значение, подобное этому 264.8, и хочу принять значение до и после точки. Я могу принять значение перед точкой, как этоКак я могу взять число после точки через подстроку?

var string = "264.8" 
var index = string2.rangeOfString(".", options: .BackwardsSearch)?.startIndex 
var substring = string.substringToIndex(index2!) 

но, пожалуйста, как я могу взять его после точки?

+4

'substringFromIndex' – Wain

+0

Почему вы используете' .BackwardsSearch'? Будет ли много точек? – Arc676

+0

О, боже, как я не видел подстрокуFromIndex, спасибо @Wain – CAN

ответ

2

Попробуйте этот код:

 var string = "264.8" 
     var numbers = string.componentsSeparatedByString(".") 
     print(numbers[0]) 
     print(numbers[1]) 
+0

@CAN, если этот anwsers - это то, что вы ищете, вы должны его отмечать. –

+0

'first' &' last', скорее всего, будут лучше. – Wain

1
var string = "264.8" 
let partsArr = string.componentsSeparatedByString(".") 

var beforeDot: String = partsArr[0] 
var afterDot: String? = partsArr[1] 
+0

Нет смысла объявлять 'afterDot' как необязательный. Если точки не было, этот код сработает. – nhgrif

+0

Да, но легко проверить длину деталиArr, чтобы избежать этой ошибки. Мой код - это просто концепция. – Igor

1

Просто для полноты картины, альтернативой является использование split:

let string = "264.8" 
let result = string.characters.split(".").map { String($0) } 
print(result[0]) // "264" 
print(result[1]) // "8" 

И еще один, чтобы использовать componentsSeparatedByCharactersInSet:

let string = "264.8" 
let result = string.componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet()) 
print(result[0]) // "264" 
print(result[1]) // "8" 
0

Al ternatively, определить переменную закрытия, которая обрабатывает преобразование для вас

let mySubstringClosure : (String) -> (String) = { $0.componentsSeparatedByString(".").first ?? $0 } 

let substring1 = mySubstringClosure("264.8") // "264" 
let substring2 = mySubstringClosure("264") // "264" 
let substring3 = mySubstringClosure("")  // "" 

Обратите внимание, что этот код работает безопасно, даже если не точка . не существует в строке, или строка пуста.

Смежные вопросы