2016-03-31 79 views
1

我想將此格式的字符串座標50.3332W轉換爲等效浮點型表示-50.3332將座標字符串轉換爲浮點型

目前我有這樣的事情,但它只是取代W字符,並在最後放置減號。

NSString *newtest = [_myTextField.text stringByReplacingOccurrencesOfString:@"W" withString:@"-"]; 

對此的任何幫助將有所幫助。

回答

1
// *** Your string value *** 
NSString *value = @"50.3332W"; 

// *** Remove `W` from string , convert it to float and make it negative by multiplying with -1. 
CGFloat floatValue = [[value stringByReplacingOccurrencesOfString:@"W" withString:@""] floatValue] * -1; 

// ** Result negative float value without `W` ** 
NSLog(@"%f",floatValue); 
+0

他可能只希望它是消極的,如果它包含' W',因爲它似乎是一個座標。 – redent84

+0

OP沒有提到這樣的事情,我的帖子回答了OP的要求。 –

+0

根據原來的問題,他想用'-'替換'W'。無論「W」的存在如何,您總是插入'-'。如果你的帖子回答了,這是一個錯誤的答案。 – redent84

1

試試這個方法:

- (float)coordinateToFloat:(NSString*)coordinateString { 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\\d+\\.?\\d+?)(W)" options:NSRegularExpressionCaseInsensitive error:nil]; 
    NSString* preffixString = [regex stringByReplacingMatchesInString:coordinateString options:0 range:NSMakeRange(0, coordinateString.length) withTemplate:@"$2$1"]; 
    NSString* normalizedString = [preffixString stringByReplacingOccurrencesOfString:@"W" withString:@"-"]; 
    return normalizedString.floatValue; 
} 

然後,你可以這樣調用:

[self coordinateToFloat:@"50.3332W"]; // Returns -50.3332 
[self coordinateToFloat:@"50.3332"]; // Returns 50.3332 

Regex Demo

+0

聰明的回答。雖然格式化使其難以閱讀。 – redent84

+0

@ redent84如何讓這個更具可讀性,你可以編輯? –

+0

這似乎並不適合我 – vype