You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.0 KiB
123 lines
3.0 KiB
//
|
|
// StringExtension.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Sujal on 12/13/17.
|
|
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
enum CurrencyType {
|
|
case usd
|
|
case krw
|
|
case `nil`
|
|
|
|
var front: String {
|
|
switch self {
|
|
case .usd: return "USD "
|
|
case .krw: return "KRW "
|
|
case .nil: return ""
|
|
}
|
|
}
|
|
|
|
var end: String {
|
|
switch self {
|
|
case .usd: return " USD"
|
|
case .krw: return " KRW"
|
|
case .nil: return ""
|
|
}
|
|
}
|
|
}
|
|
|
|
extension String {
|
|
var imageURLInResource: String {
|
|
switch self {
|
|
case "001": return "ic_cap"
|
|
case "002": return "ic_tshirt"
|
|
case "003": return "ic_glass"
|
|
case "004": return "ic_watch"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
var isBlank: Bool {
|
|
return trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).isEmpty
|
|
}
|
|
|
|
func toBase64() -> String {
|
|
let data = self.data(using: String.Encoding.utf8)
|
|
return data!.base64EncodedString()
|
|
}
|
|
|
|
func removeWhitespacesInBetween() -> String {
|
|
return components(separatedBy: .whitespaces).joined()
|
|
}
|
|
|
|
func stringRemovingComma() -> String {
|
|
return extract(regex: "[0-9.]")
|
|
}
|
|
|
|
func getDateFromDateTime() -> String {
|
|
return components(separatedBy: .whitespaces)[0]
|
|
}
|
|
|
|
func removeSpacesTrailingPreceding() -> String {
|
|
return trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
|
|
}
|
|
|
|
}
|
|
|
|
extension String {
|
|
func likeCommaMoney() -> String? {
|
|
if Double(self) == nil {
|
|
return nil
|
|
}
|
|
|
|
return Utility.getCommaSeperatedString(numberString: self)
|
|
}
|
|
|
|
func isEmail() -> Bool {
|
|
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
|
|
let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
|
|
return emailPred.evaluate(with: self)
|
|
}
|
|
|
|
func extract(regex: String) -> String {
|
|
do {
|
|
let regex = try NSRegularExpression(pattern: regex)
|
|
let nsString = self as NSString
|
|
let results = regex.matches(in: self, range: NSRange(location: 0, length: nsString.length))
|
|
|
|
return results.map { nsString.substring(with: $0.range)}.joined()
|
|
} catch let error {
|
|
print("invalid regex: \(error.localizedDescription)")
|
|
return self
|
|
}
|
|
}
|
|
|
|
func decimalToCurrency(as type: CurrencyType = .nil, isFront: Bool = false) -> String {
|
|
let text = self.extract(regex: "[0-9.]")
|
|
|
|
guard let number = Double(text) else {
|
|
return isFront ? "\(type.front)\(self)" : "\(self)\(type.end)"
|
|
}
|
|
|
|
let nsNumber = NSNumber(value: number)
|
|
let currencyFormatter = NumberFormatter()
|
|
currencyFormatter.locale = Locale(identifier: "en_US")
|
|
currencyFormatter.numberStyle = .decimal
|
|
let commaSeperatedNumberString = currencyFormatter.string(for: nsNumber)
|
|
|
|
if isFront {
|
|
return "\(type.front)\(commaSeperatedNumberString ?? self)"
|
|
} else {
|
|
return "\(commaSeperatedNumberString ?? self)\(type.end)"
|
|
}
|
|
}
|
|
|
|
func currencyToDecimal() -> String {
|
|
return self.extract(regex: "[0-9.]")
|
|
}
|
|
}
|