Skip to content
Extension to add python str type method to swift string type
Swift Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
Sources/SwiftyPyString
SwiftyPyString.xcodeproj
Tests
.gitignore
LICENSE
Package.swift
README.md
SwiftyPyString.podspec

README.md

SwiftyPyString

Cocoapods GitHub release Cocoapods platforms Swift Version

SwiftyPyString is a string extension for Swift.
This library provide Python compliant String operation methods.

Installation

Cocoapods

pod 'SwiftyPyString'

Carthage

github 'ChanTsune/SwiftyPyString'

Swift Package Manager

import PackageDescription

let package = Package(
    name: "YourProject",
    dependencies: [
        .Package(url: "https://github.com/ChanTsune/SwiftyPyString.git", from: "1.0.1")
    ]
)

Usage

import SwiftyPyString

String sliceing subscript

let str = "0123456789"
str[0]
// 0
str[-1]
// 9

// slice
str[0,5]
// 01234
str[0,8,2]
// 0246
str[nil,nil,-1]
// 9876543210

Use Slice object case

let str = "0123456789"
var slice = Slice(start:0, stop:5)
var sliceStep = Slice(start:0, stop:8, step:2)

str[slice]
// 01234
str[sliceStep]
// 0246

String Multiplication

var s = "Hello World! " * 2

// "Hello World! Hello World! "

Methods

capitalize()

"hello world!".capitalize() // "Hello world!"

casefold()

"ß".casefold() // "ss"

center(width [,fillchar])

"1234".center(10) // "   1234   "
"123"center(10) // "   123    "
"1234".center(10,fillchar:"0") // "0001234000"
"123"center(10,fillchar:"0") // "0001230000"

count(sub [,start [,end]])

"abc abc abc".count("abc") // 3
"aaaaaaaaaa".count("a", start:2) // 8
"bbbbbbbbbb".count("bb", end:8) // 4

endswith(suffix [,start [,end]])

"hello world!".endswith("!") // true
"hello world!".endswith("world!")  // true
"hello".endswith("world") // false
"hello".endswith(["hello","world","!"]) // true

expandtabs(tabsize=8)

"abc\tabc\t".expandtabs() // "abc        abc        "
"abc\tabc\t".expandtabs(4) // "abc    abc    "

find(sub [,start [,end]])

"123412312312345".find("123") // 0
"123412312312345".find("12345") // 10
"123412312312345".find("5") // 14
"123412312312345".find("31") // 6
"123412312312345".find("0") // -1

index(sub [,start [,end]]) throws

"123412312312345".index("123") // 0
"123412312312345".index("12345") // 10
"123412312312345".index("5") // 14
"123412312312345".index("31") // 6
"123412312312345".index("0") // throw PyException.ValueError

isalnum()

"123abc".isalnum() // true
"1000A".isalnum() // true
"日本語".isalnum() // true
"abc 123".isalnum() // false

isalpha()

"I have pen.".isalpha() // false
"qwerty".isalpha() // true
"日本語".isalpha() // true
"123".isalpha() // false
"".isalpha() // false

isascii()

"I have pen.".isascii() // trur
"qwerty".isascii() // true
"123".isascii() // true
"".isascii() // true
"非ASCII文字列".isascii() // false

isdecimal()

"123".isdecimal() // true
"12345".isdecimal() // true
"".isdecimal() // false
"".isdecimal() // false

isdigit()

"123".isdigit() // true
"12345".isdigit() // true
"".isdigit() // true
"".isdigit() // true

islower()

"lower case string".islower() // true
"Lower case string".islower() // false
"lower case String".islower() // false
"lower Case string".islower() // false
"小文字では無い".islower() // false

isnumeric()

"123".isnumeric() // true
"12345".isnumeric() // true
"".isnumeric() // true
"".isnumeric() // false

isprintable()

"".isprintable() // true
"abc".isprintable() // true
"\u{060D}".isprintable() // false

isspace()

" ".isspace() // true
"".isspace() // false
"Speace".isspace() // false

istitle()

"Title Case String".istitle() // true
"Title_Case_String".istitle() // true
"Title__Case  String".istitle() // true
"not Title Case String".istitle() // false
"NotTitleCaseString".istitle() // false
"Not Title case String".istitle() // false

isupper()

"UPPER CASE STRING".isupper() // true
"Upper Case String".isupper() // false
"大文字では無い".isupper() // false

join(iterable)

let array = ["abc","def","ghi"]
"".join(array) // "abcdefghi"
"-".join(array) // "abc-def-ghi"
"++".join(array) // "abc++def++ghi"

ljust(width [,fillchar])

"abc".ljust(1) // "abc"
"abc".ljust(5) // "  abc"
"abc".ljust(5, fillchar:"$") // "$$abc"

lower()

"ABCDE".lower() // "abcde"
"あいうえお".lower() // "あいうえお"

lstrip(chars=nil)

"  lstrip sample".lstrip() // "lstrip sample"
"  lstrip sample".lstrip(" ls") // "trip sample"
"lstrip sample".lstrip() // "lstrip sample"

maketrans(x [,y [,x]])

String.maketrans([97:"A",98:nil,99:"String"]) // ["a":"A","b":"","c":"String"]
String.maketrans(["a":"A","b":nil,"c":"String"]) // ["a":"A","b":"","c":"String"]
String.maketrans("abc",y: "ABC") // ["a":"A","b":"B","c":"C"]
String.maketrans("abc", y: "ABC", z: "xyz") // ["a":"A","b":"B","c":"C","x":"","y":"","z":""]

partition(sep)

"a,b,c".partition(",") // ("a",",","b,c")
"a,b,c".partition("x") // ("a,b,c","","")

replace(old, new [,count])

"abc".replace("bc", new: "bcd") // "abcd"
"Python python python python".replace("python", new: "Swift", count: 2) // "Python Swift Swift python"

rfind(sub [,start [,end]])

"0123456789".rfind("0") // 0
"0123456789".rfind("02") // -1
"0123454321".rfind("2") // 8
"0123454321".rfind("1", end: -1) // 1

rindex(sub [,start [,end]]) throws

"0123456789".rindex("0") // 0
"0123456789".rindex("02") // throw PyException.ValueError
"0123454321".rindex("2") // 8
"0123454321".rindex("1", end: -1) // 1

rjust(width [,fillchar])

"abc".rjust(1) // "abc"
"abc".rjust(5) // "abc  "
"abc"rjust(5,fillchar:"z") // "abczz"

rpartition(sep)

"a,b,c".rpartition(",") // ("a,b", ",", "c")
"a,b,c".rpartition("x") // ("", "", "a,b,c")

rsplit(sep=nil [,maxsplit])

"a,b,c,d,".rsplit(",") // ["a", "b", "c", "d", ""]
"a,b,c,d,".rsplit() // ["a,b,c,d,"]
"a,b,c,d,".rsplit(",", maxsplit: 2) // ["a,b,c","d", ""]
"a,b,c,d,".rsplit(",", maxsplit: 0) // ["a,b,c,d,"]
"aabbxxaabbaaddbb".rsplit("aa", maxsplit: 2) // ["aabbxx", "bb", "ddbb"]

rstrip(chars=nil)

"rstrip sample   ".rstrip() // "rstrip sample"
"rstrip sample   ".rstrip("sample ") // "rstri"
"  rstrip sample".rstrip() // "  rstrip sample"

split(sep=nil [,maxsplit])

"a,b,c,d,".split(",") // ["a", "b", "c", "d", ""]
"a,b,c,d,".split() // ["a,b,c,d,"]
"a,b,c,d,".split(",", maxsplit: 2) // ["a", "b", "c,d,"]
"a,b,c,d,".split(",", maxsplit: 0) // ["a,b,c,d,"]
"aabbxxaabbaaddbb".split("aa", maxsplit: 2) // ["", "bbxx", "bbaaddbb"]

splitlines([keepends])

"abc\nabc".splitlines() // ["abc", "abc"]
"abc\nabc\r".splitlines(true) // ["abc\n", "abc\r"]
"abc\r\nabc\n".splitlines() // ["abc", "abc"]
"abc\r\nabc\n".splitlines(true) // ["abc\r\n", "abc\n"]

startswith(prefix [,start [,end]])

"hello world!".startswith("hello") // true
"hello world!".startswith("h") // true
"hello".startswith("world") // flase
"hello".startswith(["hello", "world", "!"]) // true

strip(chars=nil)

"   spacious   ".strip() // "spacious"
"www.example.com".strip("cmowz.") // "example"

swapcase()

"aBcDe".swapcase() // "AbCdE"
"AbC dEf".swapcase() // "aBc DeF"
"あいうえお".swapcase() // "あいうえお"

title()

"Title letter".title() // "Title Letter"
"title Letter".title() // "Title Letter"
"abc  abC _ aBC".title() // "Abc  Abc _ Abc"

translate(transtable)

let table = String.maketrans("", y: "", z: "swift")

"I will make Python like string operation library".translate(table)
// "I ll make Pyhon lke rng operaon lbrary"

upper()

"abcde".upper() // "ABCDE"
"あいうえお".upper() // "あいうえお"

zfill()

"abc".zfill(1) // "abc"
"abc".zfill(5) // "00abc"
"+12".zfill(5) // "+0012"
"-3".zfill(5) // "-0003"
"+12".zfill(2) // "+12"

For more detail please refer below link
https://docs.python.org/3/library/stdtypes.html#string-methods

License

SwiftPyString is available under the MIT license. See the LICENSE file for more info.

You can’t perform that action at this time.