Files
i2p.i2p/launchers/macosx/I2PLauncher/Utils/StringExtensions.swift

75 lines
2.4 KiB
Swift
Raw Normal View History

//
// StringExtensions.swift
// I2PLauncher
//
// Created by Mikal Villa on 17/09/2018.
// Copyright © 2018 The I2P Project. All rights reserved.
//
import Foundation
extension String {
func replace(target: String, withString: String) -> String
{
return self.replacingOccurrences(of: target, with: withString, options: NSString.CompareOptions.literal, range: nil)
}
/// Returns an array of string obtained splitting self at each newline ("\n").
/// If the last character is a newline, it will be ignored (no empty string
/// will be appended at the end of the array)
public func splitByNewline() -> [String] {
return self.split { $0 == "\n" }.map(String.init)
}
/// Returns an array of string obtained splitting self at each space, newline or TAB character
public func splitByWhitespace() -> [String] {
let whitespaces = Set<Character>([" ", "\n", "\t"])
return self.split { whitespaces.contains($0) }.map(String.init)
}
public func splitByColon() -> [String] {
return self.split { $0 == ":" }.map(String.init)
}
2018-10-11 16:48:10 +00:00
func leftPadding(toLength: Int, withPad character: Character) -> String {
let stringLength = self.count
if stringLength < toLength {
return String(repeatElement(character, count: toLength - stringLength)) + self
} else {
return String(self.suffix(toLength))
}
}
}
extension String {
subscript (i: Int) -> Character {
return self[index(startIndex, offsetBy: i)]
}
subscript (bounds: CountableRange<Int>) -> Substring {
let start = index(startIndex, offsetBy: bounds.lowerBound)
let end = index(startIndex, offsetBy: bounds.upperBound)
return self[start ..< end]
}
subscript (bounds: CountableClosedRange<Int>) -> Substring {
let start = index(startIndex, offsetBy: bounds.lowerBound)
let end = index(startIndex, offsetBy: bounds.upperBound)
return self[start ... end]
}
subscript (bounds: CountablePartialRangeFrom<Int>) -> Substring {
let start = index(startIndex, offsetBy: bounds.lowerBound)
let end = index(endIndex, offsetBy: -1)
return self[start ... end]
}
subscript (bounds: PartialRangeThrough<Int>) -> Substring {
let end = index(startIndex, offsetBy: bounds.upperBound)
return self[startIndex ... end]
}
subscript (bounds: PartialRangeUpTo<Int>) -> Substring {
let end = index(startIndex, offsetBy: bounds.upperBound)
return self[startIndex ..< end]
}
}