Skip to content

Commit 9c2c411

Browse files
committed
feat: add hex string extensions
1 parent 02bbfb9 commit 9c2c411

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//
2+
// String.swift
3+
//
4+
//
5+
// Created by Jann Driessen on 12.06.24.
6+
//
7+
8+
import Foundation
9+
10+
public extension String {
11+
12+
func addHexPrefix() -> String {
13+
if !self.hasPrefix("0x") {
14+
return "0x" + self
15+
}
16+
return self
17+
}
18+
19+
func removeHexPrefix() -> String {
20+
if self.hasPrefix("0x") {
21+
let indexStart = self.index(self.startIndex, offsetBy: 2)
22+
return String(self[indexStart...])
23+
}
24+
return self
25+
}
26+
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// StringExtensionsTests.swift
3+
//
4+
//
5+
// Created by Jann Driessen on 12.06.24.
6+
//
7+
8+
import XCTest
9+
10+
@testable import BasedUtils
11+
12+
final class StringExtensionsTests: XCTestCase {
13+
14+
func testAddHexPrefix() throws {
15+
let address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
16+
let hash = "d8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
17+
let hash2 = "d8dA6B"
18+
let result = hash.addHexPrefix()
19+
let result2 = hash2.addHexPrefix()
20+
let result3 = "".addHexPrefix()
21+
let resultAddress = address.addHexPrefix()
22+
XCTAssertEqual(result, "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")
23+
XCTAssertEqual(result2, "0xd8dA6B")
24+
XCTAssertEqual(result3, "0x")
25+
XCTAssertEqual(resultAddress, address, "should not add a prefix if one exists")
26+
}
27+
28+
func testStripHexPrefix() throws {
29+
let address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
30+
let hex = "0xd8dA6B"
31+
let stripped = address.removeHexPrefix()
32+
let strippedHex = hex.removeHexPrefix()
33+
let result = "d8dA6B".removeHexPrefix()
34+
XCTAssertEqual(stripped, "d8dA6BF26964aF9D7eEd9e03E53415D37aA96045")
35+
XCTAssertEqual(strippedHex, "d8dA6B")
36+
XCTAssertEqual(result, "d8dA6B", "should not remove a prefix if none exists")
37+
}
38+
39+
}

0 commit comments

Comments
 (0)