75d24c15
yangbin
123
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
//
// s.swift
// Twear
//
// Created by yangbin on 2021/12/6.
//
import UIKit
//import CommonCrypto
extension StringProtocol {
var hexaData: Data { .init(hexa) }
var hexaBytes: [UInt8] { .init(hexa) }
private var hexa: UnfoldSequence<UInt8, Index> {
sequence(state: startIndex) { start in
guard start < self.endIndex else { return nil }
let end = self.index(start, offsetBy: 2, limitedBy: self.endIndex) ?? self.endIndex
defer { start = end }
return UInt8(self[start..<end], radix: 16)
}
}
}
extension String {
var length: Int {
return self.count
}
subscript (i: Int) -> String{
return self[i ..< i + 1]
}
func substring(fromIndex: Int) -> String {
return self[min(fromIndex, length) ..< length]
}
func substring(toIndex: Int) -> String {
return self[0 ..< max(0, toIndex)]
}
subscript (r: Range<Int>) -> String {
let range = Range(uncheckedBounds: (lower: max(0, min(length, r.lowerBound)), upper: min(length, max(0, r.upperBound))))
let start = index(startIndex, offsetBy: range.lowerBound)
let end = index(start, offsetBy: range.upperBound - range.lowerBound)
return String(self[start ..< end])
}
func toRange(_ range: NSRange) -> Range<String.Index>? {
guard let from16 = utf16.index(utf16.startIndex, offsetBy: range.location, limitedBy: utf16.endIndex) else { return nil }
guard let to16 = utf16.index(from16, offsetBy: range.length, limitedBy: utf16.endIndex) else { return nil }
guard let from = String.Index(from16, within: self) else { return nil }
guard let to = String.Index(to16, within: self) else { return nil }
return from ..< to
}
func checkVersion(_ newVersion: String) -> Bool {
return self.compare(newVersion, options: .numeric) == .orderedAscending
}
}
|
be19e595
yangbin
9
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
extension Float {
/// 准确的小数尾截取 - 没有进位
func decimalString() -> String {
return String(format: "%.2f", Float(Int(self*100))/100.0)
// return "\(Float(Int(distance*100))/100.0))"
// let tempCount: Self = pow(10, base)
// let temp = self*tempCount
//
// let target = Self(Int(temp))
// let stepone = target/tempCount
// if stepone.truncatingRemainder(dividingBy: 1) == 0 {
// return String(format: "%.0f", stepone)
// }else{
// return "\(stepone)"
// }
}
func mileString() -> String {
return String(format: "%.2f", Float(Int(self*100*0.6213))/100.0)
}
func footString() -> String {
return String(format: "%.2f", Float(Int(self*100*3.281))/100.0)
}
func inchString() -> String {
return String(format: "%.2f", Float(Int(self*100*39.37))/100.0)
}
}
|