IOS, как заменить запятую на точку в NSString, но только для чисел? - PullRequest
0 голосов
/ 19 марта 2012

Допустим, у меня есть строка в следующем формате:

"1,3 литра воды, 2,5 фунта чего-то, 1,4 фунта чего-то другого"

Я быхотел бы получить массив с элементами из строки, элементами, которые разделены ",".

как я могу заменить "," на ".", но только если он между 2 цифрами?

Итак, исходный массив будет выглядеть так: «1,3 литра воды, 2,5 фунта чего-то, 1,4 фунта чего-то еще»

Спасибо

Ответы [ 2 ]

4 голосов
/ 19 марта 2012

Для этого можно использовать регулярные выражения:

NSString *string = @"1,3 litres of water, 2,5 pounds of something ,1,4 pounds of something else";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"([0-9]+),([0-9]+)" options:0 error:nil];
NSString * newString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:@"$1.$2"];
NSLog(@"%@", newString); // 1.3 litres of water, 2.5 pounds of something ,1.4 pounds of something else

Теперь, если вы хотите разделить это на массив, вы можете сделать следующее:

NSArray *array = [newString componentsSeparatedByString:@","];
0 голосов
/ 19 марта 2012

Вообще говоря, создайте регулярное выражение, которое выполняет следующее: заменить (\d+),(\d+) на $1\.$2

http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...