From b0864e086e456a667e25a46e5efd891667522699 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Tue, 7 Nov 2023 13:08:53 +0900 Subject: [PATCH] Add JoinWithPrefixSuffixAndSeperator() utility Bug: n/a Test: m blueprint_tests Change-Id: I0fa5d291ce10d699df787feaf9fdaf667aa22686 --- android/util.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/android/util.go b/android/util.go index 5375373a6..f687bca28 100644 --- a/android/util.go +++ b/android/util.go @@ -61,17 +61,39 @@ func JoinWithPrefix(strs []string, prefix string) string { // JoinWithPrefixAndSeparator prepends the prefix to each string in the list and // returns them joined together with the given separator. func JoinWithPrefixAndSeparator(strs []string, prefix string, sep string) string { + return JoinWithPrefixSuffixAndSeparator(strs, prefix, "", sep) +} + +// JoinWithSuffixAndSeparator appends the suffix to each string in the list and +// returns them joined together with the given separator. +func JoinWithSuffixAndSeparator(strs []string, suffix string, sep string) string { + return JoinWithPrefixSuffixAndSeparator(strs, "", suffix, sep) +} + +// JoinWithPrefixSuffixAndSeparator appends the prefix/suffix to each string in the list and +// returns them joined together with the given separator. +func JoinWithPrefixSuffixAndSeparator(strs []string, prefix, suffix, sep string) string { if len(strs) == 0 { return "" } + // Pre-calculate the length of the result + length := 0 + for _, s := range strs { + length += len(s) + } + length += (len(prefix)+len(suffix))*len(strs) + len(sep)*(len(strs)-1) + var buf strings.Builder + buf.Grow(length) buf.WriteString(prefix) buf.WriteString(strs[0]) + buf.WriteString(suffix) for i := 1; i < len(strs); i++ { buf.WriteString(sep) buf.WriteString(prefix) buf.WriteString(strs[i]) + buf.WriteString(suffix) } return buf.String() }