我有一个包含单词和数字的字符串.如何从字符串中提取该数字?
NSString *str = @"This is my string. #1234";
Run Code Online (Sandbox Code Playgroud)
我希望能够将1234剥离为int.每次搜索时,字符串都会有不同的数字和单词.
想法?
好的,这就是计划.我从中获取数据的XML允许电话号码字段中的非数字文本(用于描述或联系人姓名等).我试图只提取数字并用它们调用tel:URL来发起呼叫.这是什么不工作:
NSCharacterSet *charset = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSString *number = @"(555) 555-5555 Office";
NSString *strippedNumber = [number stringByTrimmingCharactersInSet:charset];
NSString *phoneURL = [NSString stringWithFormat:@"tel:%@", strippedNumber];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneURL]];
Run Code Online (Sandbox Code Playgroud)
如果有任何明显的拼写错误,他们只是错别字.:)
这是我第一次尝试制作ios应用程序.
我正在使用人物选择器向用户询问电话号码,但是当它使用下面的代码检索时,我的NSString *phoneapears如(0)111192222-2222.我来自巴西,这里正确的手机号码掩码是(01111)92222-2222(9是可选的,有些数字有其他人没有).如何修复这个面膜?或者完全删除它?
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
ABMultiValueRef multiValue = ABRecordCopyValue(person, property);
CFIndex index = ABMultiValueGetIndexForIdentifier(multiValue, identifier);
NSString *phone = (__bridge NSString *)ABMultiValueCopyValueAtIndex(multiValue, index);
return NO;
}
Run Code Online (Sandbox Code Playgroud) 如果你可以向Cocoa添加任何东西,它会是什么?是否有任何功能,主要或次要,你会说在Cocoa中缺少.也许有一个轮子你不得不反复发明因为框架中的遗漏?
我有一个类似的字符串"75003 Paris, France"或"Syracuse, NY 13205, USA".
我想使用相同的代码从这些字符串中删除所有这些数字.
我怎样才能做到这一点?
我正在尝试将用户输入的一串数字转换为iPhone上的Phone.app等性感字符串.这是我正在使用的代码,它不起作用(没有特殊格式出现),并且在一定数量的数字后,它只是开始在字符串的末尾添加"0".
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterNoStyle];
[formatter setPositiveFormat:@"+# (###) ###-###"];
[formatter setLenient:YES];
NSString *strDigits = [self stringByReplacingOccurrencesOfRegex:@"[^0-9+]" withString:@""];
return [formatter stringFromNumber:[NSNumber numberWithDouble:[strDigits doubleValue]]];
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我想从字符串中删除除字符az之外的数字.我怎样才能获得角色?
我试图从带有货币符号的字符串中获取数字(浮点值).
例如.从"¥1,234"到1234从"AU $ 3,456"到3456从"56.78€"到56.78
我尝试了以下代码,但结果是0.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLenient:YES];
NSNumber *number = [formatter numberFromString:text];
NSDecimalNumber *money = [NSDecimalNumber decimalNumberWithDecimal:[number decimalValue]];
float fval = [money floatValue];
Run Code Online (Sandbox Code Playgroud)
提前致谢!
是否有更好或更短的方法在iPhone上使用Objective-C去除所有非数字字符?
NSString * formattedNumber = @"(123) 555-1234";
NSCharacterSet * nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSString * digits;
NSArray * parts = [formattedNumber componentsSeparatedByCharactersInSet:nonDigits];
if ( [parts count] > 1 ) {
digits = [parts componentsJoinedByString:@""];
} else {
digits = [parts objectAtIndex:0];
}
return digits;
Run Code Online (Sandbox Code Playgroud) 我是Objective-C的新手,但在其他更高级的语言方面经验丰富.我想通过删除所有非数字字符来规范化字符串.换句话说,给定输入字符串"206-555-1212",归一化结果应为"2065551212".下面的代码片段有效,但鉴于我在其他语言中的经验似乎有点矫枉过正.有没有更好的方法呢?
编辑:输入字符串"(206)555-1212","206.555.1212","206 555 1212"等也应返回相同的标准化结果.
NSString * normalize(NSString * number)
{
NSString *normalizedNumber = @"";
NSString *tmpString = nil;
NSRange searchRange;
NSRange resultRange;
searchRange.location = 0;
searchRange.length = number.length;
while (0 < searchRange.length)
{
resultRange = [number rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]
options:NSLiteralSearch
range:searchRange];
tmpString = [number substringWithRange:resultRange];
normalizedNumber = [normalizedNumber stringByAppendingString:tmpString];
searchRange.location = resultRange.location + resultRange.length;
searchRange.length = number.length - searchRange.location;
}
return normalizedNumber;
}
Run Code Online (Sandbox Code Playgroud) 我有一个像@"(256) 435-8115"或的字符串@"256-435-81-15".我只需要数字(这是一个电话号码).这可能吗?我还没有找到一种NSString方法来做到这一点.
我的十进制数存储在我的数据库中.我根据用户的区域设置显示它们:
- (NSString *) getLocalizedCurrencyStringWithDigits
{
NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setLocale:[NSLocale currentLocale]];
[numberFormatter setMinimumFractionDigits:2];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberString = [numberFormatter stringFromNumber:self];
return numberString;
}
Run Code Online (Sandbox Code Playgroud)
我在文本字段中显示这些字符串,这些字符串是可编辑的.因此,如果用户开始编辑该字段,我想删除千位分隔符.否则(在我的国家)我输入1'000.55然后它不识别"'"并仅保存1.这是我的功能来解析文本字段,在视图控制器中这个确切的返回值将保存到数据库:
+ (NSDecimalNumber *) getUnLocalizedDecimalNumberWithString:(NSString *)currencyString
{
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setLocale:[NSLocale currentLocale]];
[numberFormatter setMinimumFractionDigits:2];
[numberFormatter setMaximumFractionDigits:2];
BOOL isDecimal = [numberFormatter numberFromString:currencyString] != nil;
if(isDecimal){
return [NSDecimalNumber decimalNumberWithString:currencyString locale:[NSLocale currentLocale]];
} else {
return [NSDecimalNumber zero];
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有让它工作......实际上,如果带有"'"和不带的数字将被正确保存,但我不能让它工作,那将是最好的:/
编辑(我的解决方案): 让它像这样工作:
- (NSString *) getLocalizedCurrencyStringWithDigits:(int)digits
{
NSNumberFormatter *numberFormatter …Run Code Online (Sandbox Code Playgroud) 我正在构建一个iphone应用程序,它从地址簿中读取一个电话号码并拨打它(当然还有其他一些东西...... :)).当我从AB加载电话号码时,它们采用以下格式:"1(111)111-1111"使用时不能"拨号":
fullNumber = [NSString stringWithFormat:@"%@%@", @"tel:", phoneNum];
Run Code Online (Sandbox Code Playgroud)
为什么会这样?什么是最好的方法来解决这个问题?我怎么能将电话号码转换成一串数字(没有空格或" - ")?
谢谢.
objective-c ×7
iphone ×6
nsstring ×5
ios ×4
cocoa ×3
cocoa-touch ×3
string ×3
api-design ×1
formatting ×1
localization ×1
nsnumber ×1
numbers ×1
phone-number ×1
swift ×1
xcode ×1