summaryrefslogtreecommitdiffstats
path: root/base/include/android-base/strings.h
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-12-07 14:31:13 -0800
committerElliott Hughes <enh@google.com>2015-12-07 14:31:53 -0800
commitf2584be414037aaab9e344bc9f65872da624d9f0 (patch)
tree1d2643eec68c8d8b03ccd6cabf9856182e197708 /base/include/android-base/strings.h
parentd1379a8aedb7b80edac8849d2e64ceffa409632e (diff)
downloadsystem_core-f2584be414037aaab9e344bc9f65872da624d9f0.tar.gz
system_core-f2584be414037aaab9e344bc9f65872da624d9f0.tar.bz2
system_core-f2584be414037aaab9e344bc9f65872da624d9f0.zip
Rename base/ to android-base/.
Bug: http://b/26023797 Change-Id: Ie6c63bf86bed05faab87d290de6f34d9af3532a8
Diffstat (limited to 'base/include/android-base/strings.h')
-rw-r--r--base/include/android-base/strings.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/base/include/android-base/strings.h b/base/include/android-base/strings.h
new file mode 100644
index 000000000..20da144a4
--- /dev/null
+++ b/base/include/android-base/strings.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef BASE_STRINGS_H
+#define BASE_STRINGS_H
+
+#include <sstream>
+#include <string>
+#include <vector>
+
+namespace android {
+namespace base {
+
+// Splits a string into a vector of strings.
+//
+// The string is split at each occurrence of a character in delimiters.
+//
+// The empty string is not a valid delimiter list.
+std::vector<std::string> Split(const std::string& s,
+ const std::string& delimiters);
+
+// Trims whitespace off both ends of the given string.
+std::string Trim(const std::string& s);
+
+// Joins a container of things into a single string, using the given separator.
+template <typename ContainerT, typename SeparatorT>
+std::string Join(const ContainerT& things, SeparatorT separator) {
+ if (things.empty()) {
+ return "";
+ }
+
+ std::ostringstream result;
+ result << *things.begin();
+ for (auto it = std::next(things.begin()); it != things.end(); ++it) {
+ result << separator << *it;
+ }
+ return result.str();
+}
+
+// We instantiate the common cases in strings.cpp.
+extern template std::string Join(const std::vector<std::string>&, char);
+extern template std::string Join(const std::vector<const char*>&, char);
+extern template std::string Join(const std::vector<std::string>&, const std::string&);
+extern template std::string Join(const std::vector<const char*>&, const std::string&);
+
+// Tests whether 's' starts with 'prefix'.
+bool StartsWith(const std::string& s, const char* prefix);
+
+// Tests whether 's' ends with 'suffix'.
+bool EndsWith(const std::string& s, const char* suffix);
+
+} // namespace base
+} // namespace android
+
+#endif // BASE_STRINGS_H