배열
배열 삽입
// 배열 맨 뒤에 삽입
arr.append(3)
// 배열의 원하는 위치에 삽입
arr.insert(값, at: idx)
배열 pop
arr.popLast() (옵셔널 형태로 리턴해줌)
slice = arr[arr.indices]
slice.popFirst()
배열 역순으로 자리바꾸기
arr.reverse()
arr = arr.reversed()
배열 sort
// 오름차순
arr.sort(by: <)
arr = arr.sorted(by: <)
// 내림차순
arr.sort(by: >)
arr = arr.sorted(by: >)
// 2차원배열 정렬
arr.sorted(by: {$0[1] < $1[1] })
배열의 특정 요소 개수 세기
let arr = ["D", "D", "R", "D"]
arr.filter { $0 == "D" }.count // 3
2차원->1차원 배열로 변환
var arr = [[1,2,3],[2,3],[4]]
let flatten = arr.flatMap { $0 } // [1, 2, 3, 2, 3, 4]
배열 원소 개수
arr.count
문자열
문자열 extension
extension String {
subscript(_ index: Int) -> Character {
return self[self.index(self.startIndex, offsetBy: index)]
}
}
문자열 반대로
str.reversed()
특정 문자열 포함하고 있는지 확인
str.contains("문자열 또는 문자")
특정 문자의 인덱스 확인
idx = str.firstIndex(of: "A") // 옵셔널로 반환하므로 idx! 으로 사용할것
idx = str.lastIndex(of: "B")
특정 문자 제거
// 특정 문자 제거, 존재하는 모든 문자를 제거함
mystring = mystring.replacingOccurrences(of: "a" , with: "")
// 특정 문자열 제거, 존재하는 모든 문자열 제거함
mystring = mystring.replacingOccurrences(of: "[ABC]" , with: "", options: .regularExpression)
맨 앞 원소 제거
// 문자열
var str = "Hello, Swift?"
var sub = str[str.startIndex...] // "Hello, Swift?"
sub.popFirst() // "H" 삭제
String(sub) // sub 가 SubSequence 형태가 되었으므로 String 으로 다시 변환
// 정수 배열
var arr = [1,2,3,4,5,6]
var sub = arr[arr.startIndex...]
// var sub: Array<Int>.SubSequence
sub.popFirst()
출력
// 한줄씩 띄우지 않고 출력하고 싶은 경우
print(list[i][j], terminator: "")
// 한줄 띄우기만 하고 싶은 경우
print("")
입력
// 위에거 대신
let arr = str.split(separator: " ").map{Int(String($0))!}
// 아래거로 사용할것
let arr2 = str.split{$0==" "}.map{Int(String($0))!}
함수
// 배열 return 해주기
var tmp = test()
print(tmp)
func test() -> Array<Int> {
var list = [1,2,3]
return list
}
// 배열 파라미터로 넣기
var tmp = [1,2,3]
test(list: tmp)
func test(list : Array<Int>) {
list 사용가능
}
// 배열 파라미터로 넣기 (주소값 전달)
var tmp = [1,2,3]
test(list : &tmp)
func test(list : inout Array<Int>) {
list[0] = 100
}
print(tmp) // [100,2,3]