|
| 1 | +// |
| 2 | +// AGStringExtended.swift |
| 3 | +// AGCommonCodeSwift |
| 4 | +// |
| 5 | +// Created by Aman Gupta on 26/12/17. |
| 6 | +// |
| 7 | + |
| 8 | +import UIKit |
| 9 | + |
| 10 | +public extension String { |
| 11 | + // MARK: - Public variables |
| 12 | + public var first: String { |
| 13 | + return String(prefix(1)) |
| 14 | + } |
| 15 | + |
| 16 | + public var last: String { |
| 17 | + return String(suffix(1)) |
| 18 | + } |
| 19 | + |
| 20 | + public var uppercaseFirstChar: String { |
| 21 | + return first.uppercased() + String(dropFirst()) |
| 22 | + } |
| 23 | + |
| 24 | + public var vowels: [String] { |
| 25 | + get { |
| 26 | + return ["a", "e", "i", "o", "u"] |
| 27 | + } |
| 28 | + } |
| 29 | + |
| 30 | + public var consonants: [String] { |
| 31 | + get { |
| 32 | + return ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z"] |
| 33 | + } |
| 34 | + } |
| 35 | + |
| 36 | + public var length: Int { |
| 37 | + get { |
| 38 | + return self.stringByTrimmingWhiteSpaceAndNewLine().count |
| 39 | + } |
| 40 | + } |
| 41 | + |
| 42 | + //To check whether email is valid or not |
| 43 | + public func isEmail() -> Bool { |
| 44 | + if self.isEmptyString() { |
| 45 | + return false |
| 46 | + } |
| 47 | + let emailRegex = "[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}" as String |
| 48 | + let emailText = NSPredicate(format: "SELF MATCHES %@",emailRegex) |
| 49 | + let isValid = emailText.evaluate(with: self) as Bool |
| 50 | + return isValid |
| 51 | + } |
| 52 | + |
| 53 | + //To check whether URL is valid |
| 54 | + public func isURL() -> Bool { |
| 55 | + let urlRegex = "(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+" as String |
| 56 | + let urlText = NSPredicate(format: "SELF MATCHES %@", urlRegex) |
| 57 | + let isValid = urlText.evaluate(with: self) as Bool |
| 58 | + return isValid |
| 59 | + } |
| 60 | + |
| 61 | + //To check whether image URL is valid |
| 62 | + public func isImageURL() -> Bool { |
| 63 | + if self.isURL() { |
| 64 | + if self.range(of: ".png") != nil || self.range(of: ".jpg") != nil || self.range(of: ".jpeg") != nil { |
| 65 | + return true |
| 66 | + } else { |
| 67 | + return false |
| 68 | + } |
| 69 | + } else { |
| 70 | + return false |
| 71 | + } |
| 72 | + } |
| 73 | + |
| 74 | + //To check whether string is empty |
| 75 | + public func isEmptyString() -> Bool { |
| 76 | + return self.stringByTrimmingWhiteSpace().count == 0 ? true : false |
| 77 | + } |
| 78 | + |
| 79 | + //Get string by removing white space |
| 80 | + public func stringByTrimmingWhiteSpace() -> String { |
| 81 | + return self.trimmingCharacters(in: .whitespaces) |
| 82 | + } |
| 83 | + |
| 84 | + //Get string by removing white space & new line |
| 85 | + public func stringByTrimmingWhiteSpaceAndNewLine() -> String { |
| 86 | + return self.trimmingCharacters(in: .whitespacesAndNewlines) |
| 87 | + } |
| 88 | + |
| 89 | + //Remove substring in string |
| 90 | + mutating public func removeSubString(subString: String) -> String { |
| 91 | + if self.contains(subString) { |
| 92 | + guard let stringRange = self.range(of: subString) else { return self } |
| 93 | + return self.replacingCharacters(in: stringRange, with: "") |
| 94 | + } |
| 95 | + return self |
| 96 | + } |
| 97 | + |
| 98 | + public static func getString(message: Any?) -> String { |
| 99 | + guard let strMessage = message as? String else { |
| 100 | + guard let doubleValue = message as? Double else { |
| 101 | + guard let intValue = message as? Int else { |
| 102 | + guard let int64Value = message as? Int64 else { |
| 103 | + return "" |
| 104 | + } |
| 105 | + return String(int64Value) |
| 106 | + } |
| 107 | + return String(intValue) |
| 108 | + } |
| 109 | + |
| 110 | + let formatter = NumberFormatter() |
| 111 | + formatter.minimumFractionDigits = 0 |
| 112 | + formatter.maximumFractionDigits = 2 |
| 113 | + formatter.minimumIntegerDigits = 1 |
| 114 | + guard let formattedNumber = formatter.string(from: NSNumber(value: doubleValue)) else { |
| 115 | + return "" |
| 116 | + } |
| 117 | + return formattedNumber |
| 118 | + } |
| 119 | + return strMessage.stringByTrimmingWhiteSpaceAndNewLine() |
| 120 | + } |
| 121 | + |
| 122 | + public func replace(target: String, withString: String) -> String { |
| 123 | + return self.replacingOccurrences(of: target, with: withString) |
| 124 | + } |
| 125 | + |
| 126 | + //Get character array by string |
| 127 | + public func getArrayByString() -> [Character] { |
| 128 | + return Array(self) |
| 129 | + } |
| 130 | + |
| 131 | +} |
| 132 | + |
0 commit comments