String#

사용가능한 문자열 형태
시작및 종료 문자열예제GString인식백슬래쉬 이스케이프비고
홑따옴표'hello dongguk'NoYes
쌍따옴표"hello dongguk"YesYes
3개의 홑따옴표'hello dongguk'NoYes여러줄에 걸친 문자열 처리
3개의 쌍따옴표"""hello dongguk"""YesYes여러줄에 걸친 문자열 처리
슬래쉬/x(\d*)/Yes경우에 따라

문자열을 처리하는 샘플

gt = 'Hello world'

assert gt.startsWith('Hello')
assert gt.getAt(0== 'H'
assert gt[0== 'H'
assert gt.indexOf('world') >= 0
assert gt.contains('wo') 
assert gt[6..10== 'world'
assert 'Hi'+gt-'Hello' ='Hi world'
assert gt.count('o'== 2

assert 'x'.padLeft(3== '  x'
assert 'x'.padRight(3'_'== 'x__'   
assert 'x'.center(3== ' x '
assert 'x' == 'xxx'

gt = 'Hello'
assert gt instanceof java.lang.String
gt <<= ' Groovy'
assert gt instanceof java.lang.StringBuffer
assert gt.toString() == 'Hello Groovy'
gt << '!'
assert gt instanceof java.lang.StringBuffer
assert gt.toString() == 'Hello Groovy!'
gt[0..4'Hi'
assert gt.toString() == 'Hi Groovy!'
초기 할당된 문자열은 기본적으로 String타입이 된다. 이 것을 StringBuffer로 변환해서 처리하는 샘플이다. 여기서 초기 String타입일 경우 <<= 를 사용해야 StringBuffer로 변환이 된다. 만약 << 를 사용하게 된다면 String이 StringBuffer로 변환되지 않고 문자열 조합도 이루어지지 않는다. groovy차후 버전에서는 StringBuffer가 아닌 StringBuilder로 대체된다고 한다.

정규표현식#

find => =~ match => ==~ pattern => ~String

심볼의미
.어느 문자
^한줄의 시작(한줄 모드일 경우)
$한줄의 끝(한줄 모드일 경우)
\d숫자
\D숫자를 제외한 문자
\s공백
\S공백을 제외한 문자
\w글자
\W글자를 제외한 문자
()그룹핑
(xy)x 또는 y

숫자#

표현식결과Java의 경우
1f*2fDoubleFloat
(Byte)1+(Byte)2Integer
1*2LLong
1/2BigDecimal(0.5)Integer의 0
(int)(1/2)Integer(0)
i.intdiv(2)Integer(0)Java의 경우와 동일
Integer.MAX_VALUEInteger
2**31Integer
2**33Long
2**3.5Double
2G+1GBigInteger
2.5G+1GBigDecimal
1.5G==1.5FBoolean(true)
1.1G==1.1FBoolean(false)

store = ''
10.times{
store += 'x'
}
assert store=='xxxxxxxxxx'

store = ''
1.upto(5){number ->
store += number
}
assert store=='12345'

store = ''
2.downto(-2){number ->
store += number
}
assert store=='210-1-2'

store=''
0.step(0.50.1){number->
store += number
}
assert store=='00.10.20.30.4'

List#

myList = ['1''2''3']
assert ['3''4''5'].grep(myList== ['3']

def list = [[1,0][0,1,2]]
list = list.sort{a,b-> a[0]<=>b[0]}
assert list == [[0,1,2][1,0]]
list = list.sort{item->item.size() }
assert list == [[1,0][0,1,2]]
list.remove(1)
assert list == [[1,0]]

def doubled = [1,2,3].collectitem->
item*2
}
assert doubled == [246]
def odd = [1,2,3].findAllitem ->
item%2==1
}
assert odd == [1,3]

def x = [1, null, 2]
assert [1,2== x.findAll{it != null}
assert [1,2== x.grep{it}

def list = [1,2,3]
assert list.join('-'== '1-2-3'

def quickSort(list){
if(list.size()<2return list
def pivot = list[list.size().intdiv(2)]
println "pivot : $pivot"
def left = list.findAll{item -> item < pivot}
println "left : $left"
def middle = list.findAll{item -> item == pivot}
println "middle : $middle"
def right = list.findAll{item -> item > pivot}
println "right : $right"
return (quickSort(left+ middle + quickSort(right))
}

//assert quickSort([]) == []
//assert quickSort([1]) == [1]
//assert quickSort([1,2]) == [1,2]
assert quickSort([3,1,null,2]) == [null,1,2,3]

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-12) was last changed on 15-Jun-2008 17:24 by DongGukLee