안드로이드 개발 팁 #42 - 문자열이 여러 개의 서브문자열들 중 하나로 시작하는 또는 끝나는지 판별하기steemCreated with Sketch.

문자열이 여러 개의 서브문자열들 중 하나로 시작하는 또는 끝나는지 판별하기

No. 42
23.09.25. (월) | Written by @dorian-mobileapp

시작하며…

문자열이 특정한 글자들로 시작하거나 끝나는지 판별하기는 String 클래스의 startsWith 또는 endsWith 메소드를 호출하여 가능합니다. 그런데 여러개의 서브문자열들 중 하나로 시작 또는 끝나는지를 판별하는 코드는 좀 더 길고 복잡해질 수 있습니다. 좀 더 간결한 코드를 만들기 위한 확장 메소드들을 만들어 보았습니다.


기존 endsWith 메소드로 확장자 식별하기

기존의 endsWith 메소드로 파일의 확장자가 jpg, png, gif 중 하나인지 판별하는 코드는 아래와 같이 작성할 수 있습니다. 이 메소드를 반복적으로 호출해야 하므로 코드가 길어집니다.

if (fileName.endsWith(".jpg")
    or fileName.endsWith(".png")
    or fileName.endsWith(".gif")
) {
    // do something...
}

확장 메소드를 정의하여 아래와 같이 보다 짧고 깔끔한 코드를 만들어 보려 합니다.

if (fileName.endsWithOneOf(".jpg", ".png", ".gif")) {
    // do something...
}

문자열이 여러 개의 서브문자열들 중 하나로 시작하는지 판별하는 startsWithOneOf 메소드

vararg 키워드를 활용하여 가변 개수의 문자열들을 받는 prefixes 파라메터를 정의하였습니다. forEach 메소드를 활용하여 prefixes 파라메터의 문자열들 중 하나로 시작하는지 판별합니다.

fun String.startsWithOneOf(vararg prefixes: String): Boolean {
    prefixes.forEach {
        if (startsWith(it)) {
            return true
        }
    }

    return false
}

문자열이 여러 개의 서브문자열들 중 하나로 끝나는지 판별하는 endsWithOneOf 메소드

메소드 내부에서 startsWith 대신 endsWidth 메소드를 호출하는 점을 제외하면, 이 메소드의 코드는 startsWithOneOf와 동일합니다.

fun String.endsWithOneOf(vararg prefixes: String): Boolean {
    prefixes.forEach {
        if (endsWith(it)) {
            return true
        }
    }

    return false
}

참고 링크


지난 안드로이드 개발 팁


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECble app (https://ecble.etain.club)
Sort:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.05
TRX 0.33
JST 0.079
BTC 63244.09
ETH 1685.25
USDT 1.00
SBD 0.39