728x90
반응형
0.findExt
- path/filepath 패키지 이용해서 확장자 찾는 소스와 테스트코드
소스 코드
package main
import (
"path/filepath"
)
func findExtension(path string) string {
ext := filepath.Ext(path)
return ext
}
테스트 코드
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestFindExtension(t *testing.T) {
assert := assert.New(t)
testPath := []string{"/go/src/txt.txt", "go/src/test.txt", "go/test1.t", "go/t.SMF/do.txt", ".txt"}
//test1 일반적인 경우
assert.Equal(".txt", findExtension(testPath[0]))
//test2 일반적인 경우2
assert.Equal(".txt", findExtension(testPath[1]))
//test3 일반적인 확장자가 아닌경우도 . 이후로 가져오는지 확인
assert.Equal(".t", findExtension(testPath[2]))
//test4 폴더명이 .으로 끝나는경우 걸러지는 아닌지 확인
assert.Equal(".txt", findExtension(testPath[3]))
//test5 경로없이 바로 파일이 있는 경우
assert.Equal(".txt", findExtension(testPath[4]))
}
1.regularExpressions
- 정규표현식을 이용하여 확장자 찾는 소스와 테스트코드
소스 코드
package main
import (
"regexp"
)
func regularExpressionFind(fileName string) string {
r, _ := regexp.Compile("\\.[a-zA-Z0-9가-힣]+")
return r.FindString(fileName)
}
테스트 코드
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestRegularExpressionCheck(t *testing.T) {
assert := assert.New(t)
fileName1 := "test1.txt"
fileName2 := "test1.001"
fileName3 := "test1.SMF"
fileName4 := "test1.SMF.txt"
assert.Equal(".txt", regularExpressionFind(fileName1))
assert.Equal(".001", regularExpressionFind(fileName2))
assert.Equal(".SMF", regularExpressionFind(fileName3))
assert.Equal(".txt", regularExpressionFind(fileName4)) // .txt를 못찾고 .SMF를 찾음
}
2.FindReverseExt
- 거꾸로 문자열 탐색해서 확장자 찾기
- go get github.com/huandu/xstrings 패키지 이용하여 리버스 진행
소스 코드
package main
import "github.com/huandu/xstrings"
func findExt(fileName string) string {
var copyExtensions string
flag := 1
for index := len(fileName) - 1; index >= 0; index-- {
if fileName[index] == '.' {
flag = 0
break
}
copyExtensions += string(fileName[index])
}
if flag == 1 { //확장자 없는 경우 에러 처리
return ""
}
copyExtensions = xstrings.Reverse(copyExtensions)
return copyExtensions
}
//go get github.com/huandu/xstrings 다운 진행
테스트 코드
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestFindExt(t *testing.T) {
assert := assert.New(t)
fileName1 := "1.txt"
fileName2 := "2.SMF"
fileName3 := "3.001"
fileName4 := "4.txt.SMF.001"
fileName5 := "txt"
assert.Equal("txt", findExt(fileName1))
assert.Equal("SMF", findExt(fileName2))
assert.Equal("001", findExt(fileName3))
assert.Equal("001", findExt(fileName4))
assert.Equal("", findExt(fileName5))
}
참고 사이트
https://github.com/3DPIT/golang/tree/master/0722
728x90
반응형
'Go Lang' 카테고리의 다른 글
GoLangWeb-JsonTransfer (0) | 2021.07.28 |
---|---|
GoLangWeb-Web Handler (0) | 2021.07.28 |
Go Lang - 배열과 문자열 (0) | 2021.07.19 |
Go Lang - 함수 (0) | 2021.07.18 |
Go Lang - 모듈과 패키지 (0) | 2021.07.18 |
댓글