diff --git a/ZSharp/strops.cpp b/ZSharp/strops.cpp index a807b36..9691ee3 100644 --- a/ZSharp/strops.cpp +++ b/ZSharp/strops.cpp @@ -150,6 +150,32 @@ int countNoOverlap(const string& str, const char& searchFor, const char& ch1, co return cnt; } +vector splitNoOverlap(const string& str, const char& splitBy, const char& openChar, const char& closeChar) +{ + vector newStr; + + int openCount = 0; + + string tmpStr = ""; + for (int i = 0; i < (int)str.size(); i++) + { + if (str[i] == splitBy && openCount == 0) + { + newStr.push_back(tmpStr); + tmpStr = ""; + continue; + } + else if (str[i] == openChar) + openCount += 1; + else if (str[i] == closeChar) + openCount -= 1; + else + tmpStr += str[i]; + } + + return newStr; +} + string betweenChars(const string& str, const char& openChar, const char& closeChar) { string content = ""; @@ -384,4 +410,4 @@ bool isEscaped(const string& str, int curChar) return true; return false; -} \ No newline at end of file +}