flatten 20260225
This commit is contained in:
49
tjp/core/string/split.inl
Executable file
49
tjp/core/string/split.inl
Executable file
@@ -0,0 +1,49 @@
|
||||
// License: Modified MIT (NON-AI)
|
||||
// See the LICENSE file in the root directory for license information.
|
||||
// Copyright 2025 Timothy Prepscius
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace tjp::core {
|
||||
|
||||
template <typename T>
|
||||
std::vector<T> split(const T &s, const T &delimiter)
|
||||
{
|
||||
std::vector<T> result;
|
||||
|
||||
size_t last = 0; size_t next = 0;
|
||||
while ((next = s.find(delimiter, last)) != T::npos)
|
||||
{
|
||||
if (last < next)
|
||||
result.push_back(s.substr(last, next-last));
|
||||
|
||||
last = next + std::max(delimiter.size(), (size_t)1);
|
||||
}
|
||||
|
||||
if (last < s.size())
|
||||
result.push_back(s.substr(last));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
std::vector<T> split(const T &s, char delimiter)
|
||||
{
|
||||
std::vector<T> result;
|
||||
|
||||
size_t last = 0; size_t next = 0;
|
||||
while ((next = s.find(delimiter, last)) != T::npos)
|
||||
{
|
||||
if (last < next)
|
||||
result.push_back(s.substr(last, next-last));
|
||||
|
||||
last = next + 1;
|
||||
}
|
||||
|
||||
if (last < s.size())
|
||||
result.push_back(s.substr(last));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user