2016-03-31 25 views
1

Dize koordinatını 50.3332W biçimindeki -50.3332 eşdeğer yüzer gösterime dönüştürmek istiyorum.Koordinat dizesini float

Şu anda böyle bir şeyim var ama sadece W karakterinin yerine geçer ve eksi işaretini sonuna yerleştirir.

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

Bu konuyla ilgili herhangi bir yardım yardımcı olabilir. Böyle diyebilirsin, Sonra

- (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; 
} 

:

cevap

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

Muhtemelen sadece içerdiği takdirde negatif istiyor ' Bir koordinat gibi görünüyor. – redent84

+0

OP böyle bir şeyden bahsetmedi, mesajım OP'nin ne istediğini cevapladı. –

+0

Özgün soruya göre, 'W' yi bir' -' ile değiştirmek istedi. Ve sen, her zaman, "W" nin varlığından bağımsız olarak, '-' ekliyorsun. Mesajınız cevap veriyorsa, yanlış bir cevap. – redent84

1

bu yöntemi deneyin

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

Regex Demo

+0

Akıllı cevap. Biçimlendirme okumayı zorlaştırsa da. – redent84

+0

@ redent84 Bunu nasıl daha okunabilir hale getirebiliriz, düzenleyebilir misiniz? –

+0

Bu benim için çalışmıyor gibi görünüyor – vype