From b1ecfb9e7cecc71896b167ea30344d55e18bc430 Mon Sep 17 00:00:00 2001 From: AnastasiaStr Date: Mon, 5 Jun 2017 18:09:44 +0300 Subject: [PATCH] Regular expressions in Swift --- Swift/match.playground/Contents.swift | 19 ++++++++++++++++++ Swift/match.playground/contents.xcplayground | 4 ++++ .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7614 bytes Swift/replace.playground/Contents.swift | 17 ++++++++++++++++ .../replace.playground/contents.xcplayground | 4 ++++ .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7464 bytes Swift/split.playground/Contents.swift | 19 ++++++++++++++++++ Swift/split.playground/contents.xcplayground | 4 ++++ .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7452 bytes 12 files changed, 88 insertions(+) create mode 100644 Swift/match.playground/Contents.swift create mode 100644 Swift/match.playground/contents.xcplayground create mode 100644 Swift/match.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Swift/match.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Swift/replace.playground/Contents.swift create mode 100644 Swift/replace.playground/contents.xcplayground create mode 100644 Swift/replace.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Swift/replace.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Swift/split.playground/Contents.swift create mode 100644 Swift/split.playground/contents.xcplayground create mode 100644 Swift/split.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Swift/split.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/Swift/match.playground/Contents.swift b/Swift/match.playground/Contents.swift new file mode 100644 index 0000000..eabfcdc --- /dev/null +++ b/Swift/match.playground/Contents.swift @@ -0,0 +1,19 @@ +import Foundation + +let testString = "one 1 two 2 three 3" + +let pattern = "[0-9]" // Matching numbers +let nsString = testString as NSString // Cating to NSString to use special methods + +// Trying to initialize regex +do { + let regex = try NSRegularExpression(pattern: pattern, options: []) + let results = regex.matches(in: testString, options: [], range: NSMakeRange(0, testString.characters.count)) // Matches + let result = results.map { nsString.substring(with: $0.range) } + print(result) +} catch let error as NSError { // Handling exception + print("Invalid regex: \(error.localizedDescription)") +} + + + diff --git a/Swift/match.playground/contents.xcplayground b/Swift/match.playground/contents.xcplayground new file mode 100644 index 0000000..63b6dd8 --- /dev/null +++ b/Swift/match.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Swift/match.playground/playground.xcworkspace/contents.xcworkspacedata b/Swift/match.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/match.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/match.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate b/Swift/match.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d92a9a6728bc648288378dbc3ce400b4117c13db GIT binary patch literal 7614 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 Xa?smef*I literal 0 HcmV?d00001 diff --git a/Swift/replace.playground/Contents.swift b/Swift/replace.playground/Contents.swift new file mode 100644 index 0000000..8c8becb --- /dev/null +++ b/Swift/replace.playground/Contents.swift @@ -0,0 +1,17 @@ +import Foundation + +let helloString = "Hello, World!" // Defining initial string + +// Initializing regular expression +var replaceRegExp: NSRegularExpression? + +do { + replaceRegExp = try NSRegularExpression(pattern: "World", options: .allowCommentsAndWhitespace) +} catch let error as NSError { // Handling exception + print(error.localizedDescription) +} + +// Initializing new string with substring, replaced by template +let newString = replaceRegExp?.stringByReplacingMatches(in: helloString, options: .withTransparentBounds, range: NSRange(location: 0, length: helloString.characters.count), withTemplate: "Kitten") + +print(newString ?? "Replacing failed", "\n") \ No newline at end of file diff --git a/Swift/replace.playground/contents.xcplayground b/Swift/replace.playground/contents.xcplayground new file mode 100644 index 0000000..63b6dd8 --- /dev/null +++ b/Swift/replace.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Swift/replace.playground/playground.xcworkspace/contents.xcworkspacedata b/Swift/replace.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/replace.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/replace.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate b/Swift/replace.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3c64c8570fd1175cf6c2a16eb3bd6f2323af317a GIT binary patch literal 7464 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 Owfp=2*tha@-}ZlKXC7_< literal 0 HcmV?d00001 diff --git a/Swift/split.playground/Contents.swift b/Swift/split.playground/Contents.swift new file mode 100644 index 0000000..54f1445 --- /dev/null +++ b/Swift/split.playground/Contents.swift @@ -0,0 +1,19 @@ +import Foundation + +let initialString = "This-is-string-to-split-by-special-character" // Defining initial string + +let splitter = "-" // Defining splitter +let stop = "//" + +// Initializing regular expression +var splitRegExp: NSRegularExpression? +do { + splitRegExp = try NSRegularExpression(pattern: splitter, options: .allowCommentsAndWhitespace) +} catch let error as NSError { // Handling exception + print(error.localizedDescription) +} + +let modifiedString = splitRegExp?.stringByReplacingMatches(in: initialString, options: .withTransparentBounds, range: NSRange(location: 0, length: initialString.characters.count), withTemplate: stop) + +// But in Swift this method can be used +print(modifiedString?.components(separatedBy: stop) ?? "Splitting failed", "\n") \ No newline at end of file diff --git a/Swift/split.playground/contents.xcplayground b/Swift/split.playground/contents.xcplayground new file mode 100644 index 0000000..63b6dd8 --- /dev/null +++ b/Swift/split.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Swift/split.playground/playground.xcworkspace/contents.xcworkspacedata b/Swift/split.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/split.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/split.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate b/Swift/split.playground/playground.xcworkspace/xcuserdata/anastasia.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d75007862172165c1e241bd31f14d18142455801 GIT binary patch literal 7452 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 Cl>9#c literal 0 HcmV?d00001