SWIFT

[Swift] 문자, 문자열 처리 함수

clamp 2023. 1. 12. 14:51

기본 / 배열 변환

string.count 		// 문자열의 개수 Int
string.isEmpty 		// 문자열이 비었는지 true/false
string.contains("문자열") // 문자열이 문자열을 포함하는지 true/false
string.randomElement() // 문자열중 랜덤을 리턴
string.suffled() 	// 문자열을 섞어서 Character배열로 리턴

let sArr = string.map{ String($0) } //문자열을 String배열로 리턴
let string = sArr.joined()  //String배열을 String으로 변환

let arr = Array(string) // 문자열을 Character배열로 변환
let string = String(arr) // Character배열을 문자열로 변환

문자열 접근

String[인덱스]

문자열 인덱스 타입⭐️⭐️⭐️

string.startIndex 	// 문자열의 시작인덱스
string.endIndex 	// 문자열의 마지막 인덱스

⭐️⭐️⭐️string.index(string.startIndex, offsetBy:2) // 문자열의 시작으로부터 2만큼 떨어진 인덱스

string.index(after: 인덱스)    //인덱스 다음 인덱스
string.index(before: 인덱스)   //인덱스 전 인덱스

string.firstIndex(of: 요소)	// 요소의 첫 번쨰 인덱스
string.endIndex(of: 요소)	// 요소의 마지막 인덱스

string.range(of: "Swift")	// "Swift"의 range

대/소문자 변환

String.lowercased() // 소문자로 변환
String.uppercased() // 대문자로 변환

String.captialized  // 맨 앞글자만 대문자로 변환 captial swift -> Captial Swift

 

문자열 치환(교체)

String.replacingOccurrences(of: "해당문자를", with: "해당문자로")


//"swift"의 범위를 가져와서 있다면 해당 범위를 "C"로 교체
if let range = string.range(of: "swift"){
    string.replaceSubrange(range, with: "C")
}

 

문자열 자르기⭐️⭐️⭐️

split(separator:)
String.split(separator: " ") // 공백을 기준으로 문자열을 자름(SubString으로 리턴) <== 불편
let data = Array(i.split(separator: " ")// 잘라서 배열로 저장

String.split(whereSeparator: 클로저) 	// 클로저를 받기 떄문에 Deep한구현 가능


component(separatedBy:)
// 한개의 문자를 기준으로 자름 => 한개의 문자를 제거
String.components(separatedBy: " ") // " "를 기준으로 문자열을 자름
//=> " S t e v e" => ["", "S", "t", "e", "v", "e", ""]
String.components(separatedBy: " ").join // => "Steve"


//여러개를 기준으로 자름 => 여러개를 삭제가능
String.components(separatedBy: ["+", "-", "*", "/"]) // 내부의 문자들을 기준으로 자름
// => "1+2-3*4/5" => "12345"

 

접두어/접미어 반환

string.perfix(갯수) // 시작으로부터 x개 반환
string.suffix(갯수) // 끝으로부터 x개 반환

 

앞/뒤 drop시킨 나머지 반환

//갯수 만큼 drop한 나머지를 return / 내부수정이 아님
string.dropFirst(갯수) 
string.dropLast(갯수)

 

문자열 삭제

//갯수개를 remove를 시킨 나머지를 반환 / 내부수정이 일어남
string.removeFirst(갯수)
string.removeLast(갯수)

string.remove(at: 인덱스)   
string.removeSubrange(범위)

string.removeAll() //모두삭제
string.removeAll(keepingCapacity: treu) //메모리는 유지

 

문자열(문자)을 삽입

string.insert("1", at: 인덱스)  // 추가할 요소(문자)와 추가할 위치의 인덱스

string.insert(contentsOf: "111", at: string.index(after: string.startIndex)) //(문자열)

문자열 뒤에 추가

string.append("문자열") //문자열 뒤에 추가
string += "문자열"      //문자열 뒤에 추가

Char

char를 Int로 변환

char.wholeNumberValue!