números de teléfono pueden contener asteriscos y signos de número (*
y #
), y puede comenzar con un +
. el ITU-T E-123 Recommandation recomienda que el símbolo +
se utiliza para indicar que el número es un número internacional y también para servir como un recordatorio de que la secuencia de marcación internacional específica de cada país debe ser utilizado en lugar de ella.
Espacios , los guiones y los paréntesis no se pueden marcar, por lo que no tienen ningún significado en un número de teléfono. Para quitar todos los símbolos inútiles, debe eliminar todos los caracteres no en el conjunto de caracteres decimales, excepto *
y #
, y también cualquier +
no encontrado al comienzo del número de teléfono.
Que yo sepa, no existe una forma estandarizada o recomendada para representar extensiones manuales (algún uso x
, algunos utilizan ext
, algunos utilizan E
). Aunque no he encontrado una extensión manual en mucho tiempo.
NSUInteger inLength, outLength, i;
NSString *formatted = @"(123) 555-5555";
inLength = [formatted length];
unichar result[inLength];
for (i = 0, outLength = 0; i < inLength; i++)
{
unichar thisChar = [formatted characterAtIndex:i];
if (iswdigit(thisChar) || thisChar == '*' || thisChar == '#')
result[outLength++] = thisChar; // diallable number or symbol
else if (i == 0 && thisChar == '+')
result[outLength++] = thisChar; // international prefix
}
NSString *stripped = [NSString stringWithCharacters:result length:outLength];
Tenga en cuenta que los dígitos que no son como '+' son válidos en los números de teléfono. –
Los números de teléfono solo deben * comenzar * con un +, de acuerdo con [UIT-T E.123] (http://www.itu.int/rec/T-REC-E.123-200102-I/es). – dreamlax
Eso es cierto, pero necesito obtener el número en un tipo entero. Debería haber incluido eso en el detalle de la pregunta. – Mack