[Android/안드로이드] detect a URL in a String / String 에서 URL 찾아내기
2020. 11. 30. 14:24ㆍAndroid/Android Tip
autolink 라이브러리도 사용해보고 이것 저것 시도를 해보다
http(s)://, www 모두다 없을 경우 url 로 인식하지 못하는 이슈가 있어
찾고 찾다 Linkify 란 text util 을 찾게 되었다
1. String 에 url 이 있는지 확인
/**
* String 에 url 이 포함되어 있는지 확인하는 메소드
* @return true > 링크 포함 , false > 링크 미포함
*/
fun String.isContainUrl(): Boolean {
val spannableString = SpannableString.valueOf(this)
return LinkifyCompat.addLinks(spannableString, Linkify.WEB_URLS)
}
2. (1.) 에서 true 를 return 받았을 경우 String 에서 url 을 추출
/**
* url 이 포함된 String 에서 url 추출하는 메소드
* @return url
*/
fun String.detectUrl(): String {
val spannableString = SpannableString.valueOf(this)
val matchFilter = Linkify.sUrlMatchFilter
val pattern = Patterns.WEB_URL
var url: String = ""
val m = pattern.matcher(spannableString)
while (m.find()) {
val start = m.start()
val end = m.end()
if (matchFilter == null || matchFilter.acceptMatch(spannableString, start, end)) {
url = spannableString.subSequence(start, end).toString()
}
}
return url
}
위에 코드를 사용하면 http(s)://, www 가 없는 경우 즉,
https://www.naver.com, www.naver.com, naver.com 모두 인식할 수 있다
끝
참조 : developer.android.com/reference/android/text/util/Linkify