※ 다음 링크에서 줄리아 프로그래밍과 관련한 글 목록을 확인하실 수 있습니다.
※ 아래의 글을 먼저 보시면 이해에 더 도움이 됩니다.
[Julia] 기초 문법 공부 - 문자와 문자열의 모든 것
이전 글에서 다루었던 다음 함수들에 대한 예제 코드는 생략한다.
- length 함수: 문자열의 길이를 반환
- sizeof 함수: 문자열의 크기를 바이트 단위로 반환
- repeat 함수: 입력된 문자열을 원하는 수만큼 반복 (문자열 뿐만 아니라 어레이에도 동작)
- replace 함수: 문자열 내 특정 패턴을 내가 원하는 패턴으로 치환
- string 함수: 입력 인자를 문자열로 변환. 입력된 숫자, 문자를 문자열로 변환하며 여러 문자열을 입력 받았을 경우 문자열들을 병합함.
parse 함수
두 번째 인자로 입력받은 문자열을 첫 번째 인자에 지정된 데이터 타입으로 변환
1
2
3
4
|
julia> parse(Int64, "3")
3
julia> parse(Float64, "3")
3.0
|
cs |
finefirst, findnext, fineprev
주어진 문자열에서 특정 문자나 문자열 패턴이 존재하는 위치를 찾는데 활용
findfirst: 문자열 내에 특정 문자나 문자열이 위치한 인덱스 중 가장 작은 인덱스 반환
findnext/findprev: 세 번째 인자로 지정된 위치를 기준으로 이후/이전에 특정 문자의 위치를 인덱스로 반환
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
|
# findfirst
julia> str = "ABCDEFG"
"ABCDEFG"
julia> findfirst(isequal('F'), str)
6
julia> println(findfirst(isequal('z'), str)) # no matched result
nothing
julia> findfirst("ABC", str)
1:3
julia> findfirst(isequal("F"), str) # 아무것도 출력되지 않음 (잘못 사용)
julia> findfirst(isequal("F"), str) === nothing # identity check
true
julia> findfirst(isequal("F"), str) == nothing # equality check
true
# findnext
julia> findnext('F', str, 3)
6
# findprev
julia> findprev('A', str, 3)
1
julia> findprev("A", str, 3)
1:1
julia> findprev(isequal("A"), str, 3) # 아무것도 출력되지 않음 (잘못 사용)
julia> findprev(isequal('A'), str, 3)
1
|
cs |
※ NOTE (findfirst/findnext/findprev 함수 사용과 관련하여)
- isequal 함수는 char형 문자를 입력으로 하는 경우에만 제대로 동작한다.
- char형을 입력받는다면 isequal 함수가 없어도 잘 동작한다.
- string type을 isequal 함수와 사용하면 무조건 잘못된 결과가 나온다.
- isequal을 쓰는 것은 익명함수(autonomus function)과 관련된 것으로 보이는데 아직 나중에 꼭! 살펴보자.
- 결론적으로 위 함수들을 정상적으로 사용하려면 char 패턴은 isequal 함수와 함께 사용하고, string 패턴은 그냥 단독으로 사용한다.
- 정상적으로 함수를 사용하였다는 가정하에 매칭되는 패턴이 없을 경우 출력은 nothing이다.
- 아래 예제에서 "===" 연산자는 두 객체의 identity를 체크하는 연산자이다. 즉, 두 객체가 단순히 값만 같다면(euality) true를 출력하는 "==" 연산자와 달리 "===" 연산자가 true라면 두 객체는 완전히 동일한 하나 객체이다.
uppercase, lowercase
대소문자 변환
1
2
3
4
5
|
julia> lowercase(str)
"abcdefg"
julia> uppercase(str)
"ABCDEFG"
|
cs |
contains, occursin, (\in 연산자)
contains: 문자열 내 특정 문자열 패턴이 존재하는지 확인
- contains(A, B) → A contains B가 참인지 체크
occursin: contains와 인자의 위치만 다르고 동작은 동일
- occursin(A, B) → A occurs in B가 참인지 체크
\in+tab 연산자: contains 함수와 유사하지만 문자 하나의 포함 여부만을 체크할 수 있음 (문자열은 안됨)
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
|
# contains
julia> contains(str, "A")
true
julia> contains(str, "H")
false
julia> contains(str, "AB")
true
julia> contains(str, 'A')
true
# occursin
julia> occursin("AB", str)
true
julia> occursin("a", str)
false
julia> occursin('z', str)
false
# \in+tab
julia> println('B' ∈ str)
true
|
cs |
collect, split, join
collect: 입력받은 문자열을 문자 배열로 변환
split: 문자열을 공백(혹은 지정된 문자를 기준으로) 분리
join: 여러 개의 문자열을 입력 받은 후, 지정된 문자들을 문자열 사이에 삽입하여 하나의 문자열로 결합 (공백없이 결합할 시 문자열 병합연산과 같으며 string 함수를 사용하는 것과 동일)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
julia> str = "i love Julia";
# collect
julia> char_arr = collect(str);
julia> println(char_arr)
['i', ' ', 'l', 'o', 'v', 'e', ' ', 'J', 'u', 'l', 'i', 'a']
# split (공백으로 분리, 기본값)
julia> split_str = split(str);
julia> println(split_str)
SubString{String}["i", "love", "Julia"]
# join
julia> join_str = join(split_str, " ", " ");
julia> println(join_str)
i love Julia
# split (지정문자를 기준으로 분리)
julia> println(split("a,b,c,e,d,f,g", ","))
SubString{String}["a", "b", "c", "e", "d", "f", "g"]
|
cs |
'Julia Language' 카테고리의 다른 글
[Julia] 기초 문법 공부 - 산술 연산 관련 함수 (0) | 2021.05.11 |
---|---|
[Julia] 기초 문법 공부 - 주요 연산자들 (0) | 2021.04.19 |
[Julia] 기초 문법 공부 - 문자와 문자열의 모든 것 (0) | 2021.04.17 |
[Julia] 줄리아의 코딩 규약 (Coding Conventions) (0) | 2021.04.17 |
[Julia] JuliaPro/Juno IDE의 기초적인 사용방법 (0) | 2021.04.16 |