@@ -14,7 +14,6 @@ public static bool TryFormatArmenianMsisdn(string? input, out string? formatted)
1414
1515 var s = input . Trim ( ) ;
1616
17- // Special-case exact "(374)" prefix
1817 if ( s . StartsWith ( "(374)" , StringComparison . Ordinal ) )
1918 {
2019 var rest = DigitsOnly ( s . AsSpan ( 5 ) ) ;
@@ -28,7 +27,6 @@ public static bool TryFormatArmenianMsisdn(string? input, out string? formatted)
2827 return false ;
2928 }
3029
31- // General tolerant parse: allow spaces, dashes, dots, parentheses; '+' only at start
3230 var sb = new StringBuilder ( s . Length ) ;
3331 for ( var i = 0 ; i < s . Length ; i ++ )
3432 {
@@ -58,6 +56,8 @@ public static bool TryFormatArmenianMsisdn(string? input, out string? formatted)
5856 ReadOnlySpan < char > last8 ;
5957
6058 var plusAtStart = s [ 0 ] == '+' ;
59+ var doubleZeroAtStart = s . StartsWith ( "00" , StringComparison . Ordinal ) ;
60+
6161 if ( plusAtStart )
6262 {
6363 if ( span . Length == 11 && span . StartsWith ( "374" . AsSpan ( ) ) )
@@ -72,20 +72,36 @@ public static bool TryFormatArmenianMsisdn(string? input, out string? formatted)
7272 }
7373 else
7474 {
75- switch ( span . Length )
75+ // Handle "00" international prefix for Armenia: "00374" + 8 digits => total 13 digits
76+ if ( doubleZeroAtStart && span . Length == 13 && span . StartsWith ( "00374" . AsSpan ( ) ) )
77+ {
78+ last8 = span [ 5 ..] ; // skip "00" + "374"
79+ }
80+ else
7681 {
77- case 11 when span . StartsWith ( "374" . AsSpan ( ) ) :
78- last8 = span [ 3 ..] ;
79- break ;
80- case 9 when span [ 0 ] == '0' :
81- last8 = span [ 1 ..] ;
82- break ;
83- case 8 :
84- last8 = span ;
85- break ;
86- default :
87- formatted = input ;
88- return false ;
82+ switch ( span . Length )
83+ {
84+ case 11 when span . StartsWith ( "374" . AsSpan ( ) ) :
85+ {
86+ last8 = span [ 3 ..] ;
87+ break ;
88+ }
89+ case 9 when span [ 0 ] == '0' :
90+ {
91+ last8 = span [ 1 ..] ;
92+ break ;
93+ }
94+ case 8 :
95+ {
96+ last8 = span ;
97+ break ;
98+ }
99+ default :
100+ {
101+ formatted = input ;
102+ return false ;
103+ }
104+ }
89105 }
90106 }
91107
0 commit comments