Skip to content

Commit 0d4dcb3

Browse files
committed
add trim functions with custom charset
1 parent f6688e5 commit 0d4dcb3

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

loader/include/Geode/utils/string.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,18 @@ namespace geode::utils::string {
5353
GEODE_DLL size_t count(std::string const& str, char c);
5454

5555
GEODE_DLL std::string& trimLeftIP(std::string& str);
56+
GEODE_DLL std::string& trimLeftIP(std::string& str, std::string const& chars);
5657
GEODE_DLL std::string& trimRightIP(std::string& str);
58+
GEODE_DLL std::string& trimRightIP(std::string& str, std::string const& chars);
5759
GEODE_DLL std::string& trimIP(std::string& str);
60+
GEODE_DLL std::string& trimIP(std::string& str, std::string const& chars);
5861

5962
GEODE_DLL std::string trimLeft(std::string const& str);
63+
GEODE_DLL std::string trimLeft(std::string const& str, std::string const& chars);
6064
GEODE_DLL std::string trimRight(std::string const& str);
65+
GEODE_DLL std::string trimRight(std::string const& str, std::string const& chars);
6166
GEODE_DLL std::string trim(std::string const& str);
67+
GEODE_DLL std::string trim(std::string const& str, std::string const& chars);
6268

6369
GEODE_DLL std::string& normalizeIP(std::string& str);
6470
GEODE_DLL std::string normalize(std::string const& str);

loader/src/utils/string.cpp

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -144,41 +144,52 @@ size_t utils::string::count(std::string const& str, char countC) {
144144
return res;
145145
}
146146

147-
std::string& utils::string::trimLeftIP(std::string& str) {
148-
str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](auto ch) {
149-
return !std::isspace(ch);
150-
}));
147+
148+
std::string& utils::string::trimLeftIP(std::string& str, std::string const& chars) {
149+
str.erase(0, str.find_first_not_of(chars));
151150
return str;
152151
}
152+
std::string& utils::string::trimLeftIP(std::string& str) {
153+
return utils::string::trimLeftIP(str, " \f\n\r\t\v");
154+
}
153155

154-
std::string& utils::string::trimRightIP(std::string& str) {
155-
str.erase(
156-
std::find_if(
157-
str.rbegin(),
158-
str.rend(),
159-
[](auto ch) {
160-
return !std::isspace(ch);
161-
}
162-
).base(),
163-
str.end()
164-
);
156+
std::string& utils::string::trimRightIP(std::string& str, std::string const& chars) {
157+
str.erase(str.find_last_not_of(chars) + 1);
165158
return str;
166159
}
160+
std::string& utils::string::trimRightIP(std::string& str) {
161+
return utils::string::trimRightIP(str, " \f\n\r\t\v");
162+
}
167163

164+
std::string& utils::string::trimIP(std::string& str, std::string const& chars) {
165+
return utils::string::trimLeftIP(utils::string::trimRightIP(str, chars), chars);
166+
}
168167
std::string& utils::string::trimIP(std::string& str) {
169168
return utils::string::trimLeftIP(utils::string::trimRightIP(str));
170169
}
171170

171+
std::string utils::string::trimLeft(std::string const& str, std::string const& chars) {
172+
auto s2 = str;
173+
return utils::string::trimLeftIP(s2, chars);
174+
}
172175
std::string utils::string::trimLeft(std::string const& str) {
173176
auto s2 = str;
174177
return utils::string::trimLeftIP(s2);
175178
}
176179

180+
std::string utils::string::trimRight(std::string const& str, std::string const& chars) {
181+
auto ret = str;
182+
return utils::string::trimRightIP(ret, chars);
183+
}
177184
std::string utils::string::trimRight(std::string const& str) {
178185
auto ret = str;
179186
return utils::string::trimRightIP(ret);
180187
}
181188

189+
std::string utils::string::trim(std::string const& str, std::string const& chars) {
190+
auto ret = str;
191+
return utils::string::trimIP(ret, chars);
192+
}
182193
std::string utils::string::trim(std::string const& str) {
183194
auto ret = str;
184195
return utils::string::trimIP(ret);

0 commit comments

Comments
 (0)