[Scala] Membuat Wildcard Regex [Bagian 2]


Scala

Scala

Sebelumnya saya telah membuat artikel tentang membuat wildcard regex di scala, dan sekarang kita akan mengguakan kode yang sama namun kita tingkatkan fitur untuk wildcard regexnya.

Pada artikel sebelumnya, jika kita ingin menggunakan wildcard regex, kita akan menggunakan kode seperti dibawah ini :

Wildcard.matches("eko", "?k*")

Sebenarnya, kode diatas lebih terkesan seperti kode Java dibandingkan kode Scala, oleh karena itu sekarang kita akan buat cara menggunakan regex wildcard nya menjadi seperti berikut ini :

"eko" wildcard "?k*"

1. Membuat kelas Wildcard dan mengubah object Wildcard

Hal pertama yang perlu kita lakukan sekarang membuat kelas Wildcard dan mengubah object Wildcard menjadi seperti berikut ini :

/*
* Copyright (c) 2014, Eko Khannedy and/or its affiliates. All rights reserved.
* EKO KHANNEDY PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.example.rule
import java.util.regex.Pattern
/**
* @author Eko Khannedy
* @since 10/27/14
*/
class Wildcard(val value: String) {
private def -?(regex: String): String =
regex.replaceAll(Pattern.quote("?"), "\\\\w")
private def -*(regex: String): String =
regex.replaceAll(Pattern.quote("*"), "\\\\w*")
def wildcard(regex: String): Boolean = {
val finalRegex = -*(-?(regex))
val result = value.matches(finalRegex)
println(s"$value matches $regex ==> $result")
result
}
}
object Wildcard {
implicit def stringToWildcard(value: String) = new Wildcard(value)
}
view raw Wildcard.scala hosted with ❤ by GitHub

Sebenarnya kita hanya memindahkan semua metode yang ada di object Wildcard ke kelas Wildcard. Dan kita menambahkan sebuah metode implicit yang bisa secara otomatis memkonversi data String menjadi Wildcard.

2. Mengimport implicit method Wildcard

Karena kita memanfaatkan fitur implicit, jadi sebelum kita bisa menggunakan wildcard regex, kita perlu mengimport method implicit tersebut :

import com.example.rule.Wildcard.stringToWildcard

3. Menggunakan Wildcard implicit

Sekarang untuk menggunakan wildcard regex, kita bisa langsung memanggil metode wildcard dari variabel String seperti pada kode dibawah ini.

/*
* Copyright c 2014 wildcard Eko Khannedy and/or its affiliates All rights reserved
* EKO KHANNEDY PROPRIETARY/CONFIDENTIAL Use is subject to license terms
*/
package com.example.rule
import com.example.rule.Wildcard.stringToWildcard
/**
* @author Eko Khannedy
* @since 10/27/14
*/
object WildCardApp extends App {
"eko" wildcard "?k*"
"iko" wildcard "?k*"
"eka" wildcard "?k*"
"ika" wildcard "?k*"
"usu" wildcard "?k*"
"ekoeko" wildcard "?k*"
"eekoeko" wildcard "?k*"
}
view raw WildCardApp.scala hosted with ❤ by GitHub

Sekarang kode sudah terlihat lebih Scala dibandingkan Java 🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s