diff --git a/Source/cmStringAlgorithms.cxx b/Source/cmStringAlgorithms.cxx index df3b7d9c6d..544d7160c1 100644 --- a/Source/cmStringAlgorithms.cxx +++ b/Source/cmStringAlgorithms.cxx @@ -38,6 +38,24 @@ std::string cmTrimWhitespace(cm::string_view str) return std::string(start, stop + 1); } +cm::string_view cmStripWhitespace(cm::string_view str) +{ + std::string::size_type const l = str.size(); + + std::string::size_type s = 0; + while (s < l && cmIsSpace(str[s])) { + ++s; + } + if (s == l) { + return cm::string_view{}; + } + std::string::size_type e = l - 1; + while (cmIsSpace(str[e])) { + --e; + } + return str.substr(s, e + 1 - s); +} + std::string cmRemoveQuotes(cm::string_view str) { // We process only strings that have two quotes at least. diff --git a/Source/cmStringAlgorithms.h b/Source/cmStringAlgorithms.h index b0d01c00ba..d847ece5bd 100644 --- a/Source/cmStringAlgorithms.h +++ b/Source/cmStringAlgorithms.h @@ -62,6 +62,12 @@ inline bool cmIsSpace(char ch) /** Returns a string that has whitespace removed from the start and the end. */ std::string cmTrimWhitespace(cm::string_view str); +/** + * Returns a string view that has whitespace removed from the start and the + * end. + */ +cm::string_view cmStripWhitespace(cm::string_view str); + /** Returns a string that has quotes removed from the start and the end. */ std::string cmRemoveQuotes(cm::string_view str);