0

私はファイル名 exp からどのくらい多くの画像を持っているかを知る必要があります: 私は画像を呼び出します: 最初のファイル: Splash_10001.jpg 最後のファイル: Splash_10098.jpg そして、配列に挿入したい..

 for(int i = 1; i <= IMAGE_COUNT; i++)
{
    UIImage* image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%04d.%@",self.firstImageName,i,self.imageType]];
    NSLog(@"%d",i);
    [imgArray addObject:image];
}

IMAGE_COUNT を数値 98 に置き換えたいのですが、ユーザーが送信した文字列から数値を取得する必要があります: Splash_10098.jpg Splash_10098.jpg を次のように分割する必要があります:

4

4 に答える 4

1

付与される文字列の入力内容によって異なります。以下では、ドットを検索し、最大桁までさかのぼります。ちなみに、デフォルトの変換に頼るのではなく、多言語の NumberFormatter を使用することをお勧めします。

  NSString * input = @"Splash_19001.jpg";
  NSRange r = [input rangeOfString:@"."];
  if(r.location>4){
    NSString * numberPart = [input substringWithRange: NSMakeRange(r.location-4,4)];
    NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
    [nf setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber * number = [nf numberFromString:numberPart];
    int val = [number intValue];
    NSLog(@"intValue=%d",val);
  }
于 2012-10-28T08:34:56.583 に答える
0

Regex( iOS では)を使用NSRegularExpressionすると、これは非常に簡単に実行できます。

これをチェックして、

NSError *error = NULL;
NSString *originalString = @"Splash_10098.jpg";
NSString *regexString = @"([^\?]*_[0-9])([0-9]*)(.)([a-z]*)";

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:regexString options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *match = [regex firstMatchInString:originalString options:NSRegularExpressionCaseInsensitive range:NSMakeRange(0, [originalString length])];

NSLog(@"FileName: %@", [originalString substringWithRange:[match rangeAtIndex:1]]);
NSLog(@"Total Count: %@", [originalString substringWithRange:[match rangeAtIndex:2]]);
NSLog(@"File type: %@", [originalString substringWithRange:[match rangeAtIndex:4]]);

結果:

FileName: Splash_1
Total Count: 0098
File type: jpg
于 2012-10-28T11:05:45.130 に答える
0

数字の長さが接尾辞で固定されている場合は、接頭辞を削除しようとする代わりに部分文字列を使用する方が理にかなっています。拡張機能を削除して最後の x 文字を取得し、iOS によって提案されたいずれかでそれらを int に変換しintValueますNSNumberFormatterが、文字列の形式が確かな場合は不要かもしれません。

NSString *userProvidedString = @"Splash_10001.jpg";
NSString *numberString = [userProvidedString stringByDeletingPathExtension];
NSUInteger length = [numberString length];
NSInteger numberLength = 4;
if (length < numberLength)
{
     NSLog(@"Error in the string");
     return;
}
numberString = [numberString substringWithRange: NSMakeRange(length - 4, 4)];
NSInteger integer = [numberString integerValue];
// Do whatever you want with the integer.
于 2012-10-28T08:39:39.110 に答える
0

これがあなたが探しているものだと思います

NSString *stringUserSendsYou = @"Splash_10098.jpg";
int IMAGE_COUNT = [[[stringUserSendsYou stringByReplacingOccurrencesOfString:@"Splash_1" withString:@""] stringByReplacingOccurrencesOfString:@".jpg" withString:@""] integerValue];
于 2012-10-28T08:15:23.747 に答える