.getLastPathSegment().matchesについて教えて下さい。
private object RegexPattern {
val ArticlePattern = "-?\\d+(\\.\\d+)?"
}
private val articleRegex by Delegates.lazy {
WebViewActivity.RegexPattern.ArticlePattern.toRegex()
}
private fun setupUri() {
if (this.uri == null) {
val u = getIntent()
.getStringExtra(
getResources()
.getString(R.string.default_webview_activity_uri)
)
//urlがnullじゃない場合
if (u != null) {
//もしuがnullの場合NullPointerException
val parsedUri = Uri.parse(u)
//ドメインがぐーぐる(teru or false)
val isGoogle = Constants.isGoogleDomain(parsedUri)
//ドメインがぐーぐるのの場合
val newUri: Uri = if (isGoogle) {
val isArticle = parsedUri.getLastPathSegment().matches(articleRegex)
//articleの場合?
val builder: Uri.Builder = if (isArticle) {
val identifier = parsedUri.getLastPathSegment().toInt()
User.addHistory(identifier)
val favored = User.containsInBookmark(identifier)
val flag = if (favored) {
1
} else {
0
}
parsedUri.buildUpon()
.appendQueryParameter("favored", "$flag")
質問です。
val isArticle = parsedUri.getLastPathSegment().matches(articleRegex)
の部分について、どんな処理でしょうか?
getLastPathSegment()
について調べたところ、
"URIのpath部から最後のセグメントをデコードして抽出する。"
これはどうゆう意味でしょうか?
URLによってはisArticle
にtureかfalse返す前にエラーで落ちてしまいますが、エラー発生条件がわかりません。デバッグではUri.java
を通過したあとにエラーになります。