NSString
から分を秒単位で抽出するにはどうすればよいですか?例:正規表現で分と秒を抽出する
3'15" or 3' 15" (3 minutes 15 seconds)
28" (28 seconds)
2' (2 minutes)
50 (default is in seconds, 50 seconds)
NSInteger
?
NSString
から分を秒単位で抽出するにはどうすればよいですか?例:正規表現で分と秒を抽出する
3'15" or 3' 15" (3 minutes 15 seconds)
28" (28 seconds)
2' (2 minutes)
50 (default is in seconds, 50 seconds)
NSInteger
?
正規表現のマッチングは文字列から数字を読むための最良の方法であるが、ここで働くのスニペットであることを完全に納得していない:それは5'21
5分も21のような文字列を解析すること
NSString *str = @"12'34\"";
NSString *minutePattern = @"[[:digit:]]+'";
NSString *secondPattern = @"[[:digit:]]+\"?";
NSRange minuteRange = [str rangeOfString: minutePattern options: NSRegularExpressionSearch];
NSRange secondStartRange;
NSString *minuteString = @"";
if (minuteRange.location != NSNotFound)
{
minuteString = [str substringWithRange: minuteRange];
NSUInteger secondStartPt = NSMaxRange(minuteRange);
secondStartRange = NSMakeRange(secondStartPt, str.length - secondStartPt);
}
else {
secondStartRange = NSMakeRange(0, str.length);
}
NSRange secondRange = [str rangeOfString: secondPattern
options: NSRegularExpressionSearch
range: secondStartRange];
NSString *secondString = @"";
if (secondRange.location != NSNotFound)
{
secondString = [str substringWithRange: secondRange];
}
NSInteger minutes = [minuteString integerValue];
NSInteger seconds = [secondString integerValue];
NSLog(@"Minutes: %d, seconds: %d", minutes, seconds);
注意それがあなたが望むものなのかどうかは分からないが、それは余分なテストで修正することができる。
NSArray *data = @[@"3'15\"", @"3' 15\"", @"28\"", @"2'", @"50"];
NSString *pattern = @"(\\d++')|(\\d++(\"{0,1})$)";
NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:pattern
options:NSRegularExpressionCaseInsensitive
error:nil];
for (NSString *string in data) {
NSInteger mi = 0;
NSInteger ss = 0;
NSArray *match = [regExp matchesInString:string options:0 range:NSMakeRange(0,string.length)];
for (NSTextCheckingResult *result in match) {
NSString *value = [string substringWithRange:result.range];
if ([value hasSuffix:@"'"]) {
mi = [value integerValue];
} else {
ss = [value integerValue];
}
}
NSLog(@"%@ - %d %d",string,mi,ss);
}
最初の分になりますそれの説明も同様に – Bowdzone
'(\ D +「)|(\ D + [^」])'秒varは常に秒となり、それは常にポストコードが、いくつかの種類だけではないにpreverableある – noob