2016-03-31 19 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

彼はおそらく唯一の、それは 'が含まれている場合、それは負になりたいですそれは座標のように見える。 – redent84

+0

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

関連する問題