2016-12-08 2 views
0

Я получаю телефонные номера в формате (888) 478-0041. И я создаю ссылку для этого, если вы нажмете на этот номер телефона, он автоматически сделает вызов. Но в этом формате мой звонок идет только на первые три номера: (888). так что я должен делать, я не получаю.Получение звонков только по первым трем номерам

У меня есть строка, которая приходит с сервера:

<p>Your 2017 F-150 may need an oil change soon. &nbsp;Call&nbsp;</p><b><a href=\"tel:(888) 853-6045\">(888) 853-6045</a></b><p>&nbsp;or <a href=\"tel:(888) 478-0041\">(888) 478-0041</a> click</p><b>&nbsp;here</b><p>&nbsp;to schedule online. &nbsp;Jacob Williams, Service Manager</p> 

Я хочу, чтобы удалить пробел после тел, которая приходит до 10 символов в номере телефона.

Я использую приведенный ниже код для этого.

if ([serviceMessage containsString:@"tel:"]) { 
    NSUInteger location = [serviceMessage rangeOfString:@"tel:"].location + 4; 
    serviceMessage = [serviceMessage substringFromIndex:location]; 
    [serviceMessage substringWithRange:NSMakeRange(11,0)]; 
    serviceMessage =[serviceMessage substringToIndex:10]; 
    NSLog(@"New Trimmed string:%@",serviceMessage); 
    serviceMessage = [serviceMessage stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    NSLog(@"Final Trimmed string:%@",serviceMessage); 
} 
+0

показать ур попробовал код с краном действие также –

+0

просто обновите свой вопрос с помощью некорректного кода, который вы пытаетесь сделать для звонка –

+0

что такое окончательный вывод u get here here serviceMessage –

ответ

1

Вы должны использовать replaceOccurrencesOfString:withString:options:range:, если вы просто хотите, чтобы заменить пространство в пределах определенного диапазона и для многократного поиска в tel: использования NSRegularExpression.

NSString *serviceMessage = @"<p>Your 2017 F-150 may need an oil change soon. &nbsp;Call&nbsp;</p><b><a href=\"tel:(888) 853-6045\">(888) 853-6045</a></b><p>&nbsp;or <a href=\"tel:(888) 478-0041\">(888) 478-0041</a> click</p><b>&nbsp;here</b><p>&nbsp;to schedule online. &nbsp;Jacob Williams, Service Manager</p>"; 

NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(tel:)" options:0 error:&error]; 
NSArray *matches = [regex matchesInString:serviceMessage options:0 range:NSMakeRange(0, serviceMessage.length)]; 
for (NSTextCheckingResult *match in matches) { 
    NSRange wordRange = [match rangeAtIndex:1]; 
    NSUInteger location = wordRange.location + 4; 
    serviceMessage = [serviceMessage stringByReplacingOccurrencesOfString:@" " withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(location, 13)]; 
} 
NSLog(@"%@",serviceMessage); 

Выход

<p>Your 2017 F-150 may need an oil change soon. &nbsp;Call&nbsp;</p><b><a href="tel:(888)853-6045">(888) 853-6045</a></b><p>&nbsp;or <a href="tel:(888)478-0041">(888) 478-0041</a> click</p><b>&nbsp;here</b><p>&nbsp;to schedule online. &nbsp;Jacob Williams, Service Manager</p> 
+0

Hi @Nirav, Но есть два телефона; в том, что мне нужно будет сделать для второго –

+0

Да, конечно, если вы это сделаете, то большое спасибо за это. –

+0

@AdityaPandey Проверьте отредактированный ответ :) –

0

"Г-н Адитья Пандей" дали очень хороший и techfull решение. Но если вы не более знакомы с понятиями IOS и если вы обнаружите, что решение трудно, вы можете также пойти с опцией ниже:

if ([responceStr containsString:@"tel:"]) { 
     NSUInteger location = [responceStr rangeOfString:@"tel:"].location; 
     NSString *subStr = [responceStr substringFromIndex:location]; 
     NSString *endStr; 
     if ([subStr containsString:@"\">"]) 
     { 
      NSUInteger endLocation = [subStr rangeOfString:@"\">"].location; 
      endStr = [subStr substringToIndex:endLocation]; 
     } 
     NSLog(@"New Trimed string:%@",endStr); 
     responceStr = [endStr stringByReplacingOccurrencesOfString:@" " withString:@""]; 
     NSLog(@"Final Trimed string:%@",responceStr); 
    } 

Вы можете снова начать поиск следующего tel: из endStr.

Смежные вопросы