// Copyright (C) 2019-2020 Zilliz. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software distributed under the License // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express // or implied. See the License for the specific language governing permissions and limitations under the License. #pragma once #include "utils/Status.h" #include #include namespace milvus { namespace server { class StringHelpFunctions { private: StringHelpFunctions() = default; public: // trim blanks from begin and end // " a b c " => "a b c" static void TrimStringBlank(std::string& string); // trim quotes from begin and end // "'abc'" => "abc" static void TrimStringQuote(std::string& string, const std::string& qoute); // split string by delimeter ',' // a,b,c a | b | c // a,b, a | b | // ,b,c | b | c // ,b, | b | // ,, | | // a a static void SplitStringByDelimeter(const std::string& str, const std::string& delimeter, std::vector& result); // merge strings with delimeter // "a", "b", "c" => "a,b,c" static void MergeStringWithDelimeter(const std::vector& strs, const std::string& delimeter, std::string& result); // assume the table has two columns, quote='\"', delimeter=',' // a,b a | b // "aa,gg,yy",b aa,gg,yy | b // aa"dd,rr"kk,pp aadd,rrkk | pp // "aa,bb" aa,bb // 55,1122\"aa,bb\",yyy,\"kkk\" 55 | 1122aa,bb | yyy | kkk // "55,1122"aa,bb",yyy,"kkk" illegal static Status SplitStringByQuote(const std::string& str, const std::string& delimeter, const std::string& quote, std::vector& result); // std regex match function // regex grammar reference: http://www.cplusplus.com/reference/regex/ECMAScript/ static bool IsRegexMatch(const std::string& target_str, const std::string& pattern); // conversion rules refer to ValidationUtil::ValidateStringIsBool() // "true", "on", "yes", "1" ==> true // "false", "off", "no", "0", "" ==> false static Status ConvertToBoolean(const std::string& str, bool& value); }; } // namespace server } // namespace milvus