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