From 94c1f231a2ecb6dd147d3bbf6735e0d13be309fb Mon Sep 17 00:00:00 2001 From: lawlielt Date: Tue, 7 May 2024 11:21:52 +0000 Subject: [PATCH] feat: add GetNationalPrefix method --- phonenumbers.go | 9 +++++++++ phonenumbers_test.go | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/phonenumbers.go b/phonenumbers.go index fb5ea06..f3b23b4 100644 --- a/phonenumbers.go +++ b/phonenumbers.go @@ -3486,3 +3486,12 @@ func GetGeocodingForNumber(number *PhoneNumber, lang string) (string, error) { } return display.Regions(langT).Name(reg), nil } + +// GetNationalPrefix return the region national prefix of the number +func GetNationalPrefix(number *PhoneNumber) string { + metadata := getMetadataForRegion(GetRegionCodeForNumber(number)) + if metadata == nil { + return "" + } + return metadata.GetNationalPrefix() +} diff --git a/phonenumbers_test.go b/phonenumbers_test.go index 9cce22b..8df3315 100644 --- a/phonenumbers_test.go +++ b/phonenumbers_test.go @@ -1679,6 +1679,27 @@ func TestGetSafeCarrierDisplayNameForNumber(t *testing.T) { } } +func TestGetNationalPrefix(t *testing.T) { + tests := []struct { + num string + expected string + }{ + {num: "+1213-290-1064", expected: "1"}, + {num: "+8601087777777", expected: "0"}, + {num: "+442079460958", expected: "0"}, + } + for _, test := range tests { + number, err := Parse(test.num, "CN") + if err != nil { + t.Errorf("Failed to parse number %s: %s", test.num, err) + } + nationalPrefix := GetNationalPrefix(number) + if test.expected != nationalPrefix { + t.Errorf("Expected '%s', got '%s' for '%s'", test.expected, nationalPrefix, test.num) + } + } +} + func s(str string) *string { return &str }