#### [Abblix\.SecurityEvents](https://www.abblix.com/en/docs/api/abblix-securityevents 'index')
### [Abblix\.SecurityEvents\.Subjects](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Subjects 'Abblix\.SecurityEvents\.Subjects')

## PhoneNumberCanonicalization Class

Removes presentation characters from a telephone number so that two senders' spellings of one
number can be compared\.

```csharp
public static class PhoneNumberCanonicalization
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → PhoneNumberCanonicalization

### Remarks

RFC 9493 Section 3.2.5 requires the wire value to be in E.164 form already, and E.164 defines a
number as a country code followed by a national number - digits only, with no separators. The
separators seen in practice (spaces, hyphens, parentheses, dots) are presentation, so removing
them recovers the number E.164 describes and cannot merge two different numbers.

Only those four named separators are removed. Every other character - a letter, an unexpected
symbol, a non-ASCII digit - survives, precisely because this method validates nothing: deleting
what it does not understand would fold two genuinely distinct values into one, and a comparison
utility that can say "equal" about different identifiers is worse than one that says "not
equal" about equal spellings.

What this deliberately does NOT do is repair a number that is not in E.164 form. Reading a
leading "00" as the "+" prefix, or supplying a country code from context, are national dialling
conventions rather than anything E.164 or RFC 9493 states; a library that guessed at them would
occasionally guess wrong and produce a valid-looking number belonging to somebody else. An
application that knows the dialling plan its senders use is the right place for that.
### Methods

## PhoneNumberCanonicalization\.ToComparableForm\(string\) Method {#Abblix.SecurityEvents.Subjects.PhoneNumberCanonicalization.ToComparableForm(string)}

Returns the number with the presentation separators \- spaces, hyphens, parentheses and
dots \- removed, and every other character kept\.

```csharp
public static string ToComparableForm(string phoneNumber);
```
#### Parameters

###### `phoneNumber` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SecurityEvents.Subjects.PhoneNumberCanonicalization.ToComparableForm(string).phoneNumber}

The number to fold\. May be any string; nothing is validated, and a value that was not in
E\.164 form going in is not in E\.164 form coming out\.

#### Returns
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')  
The number without its presentation separators\.
