1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "standardize_utils.h"
17 #include "telephony_log_wrapper.h"
18 
19 namespace OHOS {
20 namespace Telephony {
RemoveSeparatorsPhoneNumber(const std::string & phoneString)21 std::string StandardizeUtils::RemoveSeparatorsPhoneNumber(const std::string &phoneString)
22 {
23     std::string newString;
24 
25     if (phoneString.empty()) {
26         TELEPHONY_LOGE("RemoveSeparatorsPhoneNumber return, phoneStr is empty.");
27         return newString;
28     }
29 
30     for (char c : phoneString) {
31         if ((c >= '0' && c <= '9') || c == '*' || c == '#' || c == '+' || c == 'N' || c == ',' || c == ';') {
32             newString += c;
33         }
34     }
35 
36     return newString;
37 }
38 
FormatNumberAndToa(const std::string & phoneNumber,const int32_t callToa)39 std::string StandardizeUtils::FormatNumberAndToa(const std::string &phoneNumber, const int32_t callToa)
40 {
41     if (phoneNumber.empty()) {
42         TELEPHONY_LOGE("FormatNumberAndToa return, phoneNumber is empty.");
43         return phoneNumber;
44     }
45     std::string newString;
46     const int32_t TOA_INTER = 145;
47     if (callToa == TOA_INTER && !phoneNumber.empty() && phoneNumber.front() != '+') {
48         newString += '+';
49         for (char c : phoneNumber) {
50             newString += c;
51         }
52     } else {
53         newString = phoneNumber;
54     }
55     return newString;
56 }
57 
ExtractAddressAndPostDial(const std::string & phoneString,std::string & networkAddress,std::string & postDial)58 void StandardizeUtils::ExtractAddressAndPostDial(const std::string &phoneString, std::string &networkAddress,
59                                                  std::string &postDial)
60 {
61     if (phoneString.empty()) {
62         TELEPHONY_LOGE("ExtractAddressAndPostDial return, phoneStr is empty.");
63         return;
64     }
65 
66     size_t postDialIndex = phoneString.length();
67     for (size_t i = 0; i < phoneString.length(); i++) {
68         char c = phoneString.at(i);
69         if ((c >= '0' && c <= '9') || c == '*' || c == '#' || c == '+' || c == 'N') {
70             networkAddress += c;
71         } else if (c == ',' || c == ';') {
72             postDialIndex = i;
73             break;
74         }
75     }
76 
77     for (size_t i = postDialIndex; i < phoneString.length(); i++) {
78         char c = phoneString.at(i);
79         postDial += c;
80     }
81 }
82 
Split(const std::string & str,const std::string & flag)83 std::vector<std::string> StandardizeUtils::Split(const std::string &str, const std::string &flag)
84 {
85     std::vector<std::string> vec;
86     std::string::size_type start = 0;
87     std::string::size_type pos = 0;
88     while ((pos = str.find(flag, start)) != str.npos) {
89         vec.push_back(str.substr(start, pos - start));
90         start = pos + flag.size();
91     }
92     if (start != str.size()) {
93         vec.push_back(str.substr(start, str.size() - start));
94     }
95     return vec;
96 }
97 } // namespace Telephony
98 } // namespace OHOS
99