string_util_win.cc 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/strings/string_util_win.h"
  5. #include "base/strings/string_util_internal.h"
  6. namespace base {
  7. bool IsStringASCII(WStringPiece str) {
  8. return internal::DoIsStringASCII(str.data(), str.length());
  9. }
  10. std::wstring ToLowerASCII(WStringPiece str) {
  11. return internal::ToLowerASCIIImpl(str);
  12. }
  13. std::wstring ToUpperASCII(WStringPiece str) {
  14. return internal::ToUpperASCIIImpl(str);
  15. }
  16. int CompareCaseInsensitiveASCII(WStringPiece a, WStringPiece b) {
  17. return internal::CompareCaseInsensitiveASCIIT(a, b);
  18. }
  19. bool RemoveChars(WStringPiece input,
  20. WStringPiece remove_chars,
  21. std::wstring* output) {
  22. return internal::ReplaceCharsT(input, remove_chars, WStringPiece(), output);
  23. }
  24. bool ReplaceChars(WStringPiece input,
  25. WStringPiece replace_chars,
  26. WStringPiece replace_with,
  27. std::wstring* output) {
  28. return internal::ReplaceCharsT(input, replace_chars, replace_with, output);
  29. }
  30. bool TrimString(WStringPiece input,
  31. WStringPiece trim_chars,
  32. std::wstring* output) {
  33. return internal::TrimStringT(input, trim_chars, TRIM_ALL, output) !=
  34. TRIM_NONE;
  35. }
  36. WStringPiece TrimString(WStringPiece input,
  37. WStringPiece trim_chars,
  38. TrimPositions positions) {
  39. return internal::TrimStringPieceT(input, trim_chars, positions);
  40. }
  41. TrimPositions TrimWhitespace(WStringPiece input,
  42. TrimPositions positions,
  43. std::wstring* output) {
  44. return internal::TrimStringT(input, WStringPiece(kWhitespaceWide), positions,
  45. output);
  46. }
  47. WStringPiece TrimWhitespace(WStringPiece input, TrimPositions positions) {
  48. return internal::TrimStringPieceT(input, WStringPiece(kWhitespaceWide),
  49. positions);
  50. }
  51. std::wstring CollapseWhitespace(WStringPiece text,
  52. bool trim_sequences_with_line_breaks) {
  53. return internal::CollapseWhitespaceT(text, trim_sequences_with_line_breaks);
  54. }
  55. bool ContainsOnlyChars(WStringPiece input, WStringPiece characters) {
  56. return input.find_first_not_of(characters) == StringPiece::npos;
  57. }
  58. bool EqualsASCII(WStringPiece str, StringPiece ascii) {
  59. return std::equal(ascii.begin(), ascii.end(), str.begin(), str.end());
  60. }
  61. bool StartsWith(WStringPiece str,
  62. WStringPiece search_for,
  63. CompareCase case_sensitivity) {
  64. return internal::StartsWithT(str, search_for, case_sensitivity);
  65. }
  66. bool EndsWith(WStringPiece str,
  67. WStringPiece search_for,
  68. CompareCase case_sensitivity) {
  69. return internal::EndsWithT(str, search_for, case_sensitivity);
  70. }
  71. void ReplaceFirstSubstringAfterOffset(std::wstring* str,
  72. size_t start_offset,
  73. WStringPiece find_this,
  74. WStringPiece replace_with) {
  75. internal::DoReplaceMatchesAfterOffset(
  76. str, start_offset, internal::MakeSubstringMatcher(find_this),
  77. replace_with, internal::ReplaceType::REPLACE_FIRST);
  78. }
  79. void ReplaceSubstringsAfterOffset(std::wstring* str,
  80. size_t start_offset,
  81. WStringPiece find_this,
  82. WStringPiece replace_with) {
  83. internal::DoReplaceMatchesAfterOffset(
  84. str, start_offset, internal::MakeSubstringMatcher(find_this),
  85. replace_with, internal::ReplaceType::REPLACE_ALL);
  86. }
  87. wchar_t* WriteInto(std::wstring* str, size_t length_with_null) {
  88. return internal::WriteIntoT(str, length_with_null);
  89. }
  90. std::wstring JoinString(span<const std::wstring> parts,
  91. WStringPiece separator) {
  92. return internal::JoinStringT(parts, separator);
  93. }
  94. std::wstring JoinString(span<const WStringPiece> parts,
  95. WStringPiece separator) {
  96. return internal::JoinStringT(parts, separator);
  97. }
  98. std::wstring JoinString(std::initializer_list<WStringPiece> parts,
  99. WStringPiece separator) {
  100. return internal::JoinStringT(parts, separator);
  101. }
  102. std::wstring ReplaceStringPlaceholders(WStringPiece format_string,
  103. const std::vector<std::wstring>& subst,
  104. std::vector<size_t>* offsets) {
  105. return internal::DoReplaceStringPlaceholders(format_string, subst, offsets);
  106. }
  107. } // namespace base