Merge pull request #11159 from airspeedswift/4.0-substring-filter
[4.0]Have Substring.filter return a String
diff --git a/stdlib/public/core/Substring.swift.gyb b/stdlib/public/core/Substring.swift.gyb
index 792cf4c..560f9c1 100644
--- a/stdlib/public/core/Substring.swift.gyb
+++ b/stdlib/public/core/Substring.swift.gyb
@@ -434,6 +434,12 @@
public func uppercased() -> String {
return String(self).uppercased()
}
+
+ public func filter(
+ _ isIncluded: (Element) throws -> Bool
+ ) rethrows -> String {
+ return try String(self.lazy.filter(isIncluded))
+ }
}
extension Substring : TextOutputStream {
diff --git a/test/stdlib/subString.swift b/test/stdlib/subString.swift
index 8afee2d..c316274 100644
--- a/test/stdlib/subString.swift
+++ b/test/stdlib/subString.swift
@@ -92,6 +92,14 @@
["apple", "pen", "pen", "pineapple"])
}
+SubstringTests.test("Filter") {
+ var name = "😂Edward Woodward".dropFirst()
+ var filtered = name.filter { $0 != "d" }
+ expectType(Substring.self, &name)
+ expectType(String.self, &filtered)
+ expectEqual("Ewar Woowar", filtered)
+}
+
SubstringTests.test("CharacterView") {
let s = "abcdefg"
var t = s.characters.dropFirst(2)