Showing posts with label string. Show all posts
Showing posts with label string. Show all posts

Sunday, June 8, 2008

Regular Expression di Java

Regular expression (regex) adalah konstruksi yang sangat powerful dalam mengolah teks. Berangkat dari popularitas penggunaannya di PERL, regex ini sekarang umum dijumpai di hampir semua bahasa pemrograman yang populer termasuk Java.

Jadi, bagaimana kita menggunakannya di Java ?

Mudah, ikuti saja tips berikut ini ;)

Mencocokkan suatu pola teks di dalam objek bertipe String

Untuk mencocokkan suatu pola teks, kita gunakan metode matches() dari String object. Sintaksnya adalah sebagai berikut:

boolean java.lang.String.matches(String regex)

Parameter yang digunakan adalah suatu pola atau pattern - yang merupakan suatu objek String - dan method ini mengembalikan nilai boolean true jika pola yang dibandingkan cocok. Begitu juga sebaliknya, akan mengembalikan nilai false jika pola yang dibandingkan dengan teks tidak cocok.

Contoh 1:

if(textToBeMatched.matches("[a-z A-Z]+"))
System.out.println("Teks cocok dengan sederetan karakter alfabet");


Contoh 2:


public class RegexTest {

public static void testPhoneNumber(String phoneNumber)
{
String phoneNumberPattern = "^\\+{0,1}[\\d]+[-\\d]+\\d$";

if(phoneNumber.matches(phoneNumberPattern))
System.out.println(phoneNumber + " adalah pola nomor telepon !");
else
System.out.println(phoneNumber + " bukan merupakan pola nomor telepon yang valid !");
}
public static void main(String[] args)
{
testPhoneNumber("+6221-3011-9353"); //output adalah nomor telepon yang benar
testPhoneNumber("-6221-3011-9353"); //output adalah nomor telepon yang salah
}
}


Mengganti teks yang cocok dengan suatu pola

Untuk mengganti suatu teks yang cocok dengan suatu pola kita dapat menggunakan dua class dari package java.util, yaitu class Pattern dan Matcher.

Pertama, kita menginisialisasi pola dengan method compile() dari class Pattern. Method ini sekaligus akan mengembalikan satu objek Pattern. Kita kemudian dapat memberikan teks yang akan diolah ke method matcher() yang kembali akan membuat objek Matcher. Sekarang kita tinggal memanipulasi teks dalam objek tersebut. Caranya adalah dengan menggunakan method replaceAll() method dari objek Matcher.



Contoh:


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexReplacementTest {

public static String censoredPhoneNumber(String phoneNumber)
{
String phonePattern = "(\\+{0,1}[\\d]+[-\\d]+\\d).*";

Pattern pattern = Pattern.compile(phonePattern);
Matcher matcher = pattern.matcher(phoneNumber);

return matcher.replaceAll("*sensor*");
}

public static void main(String[] args)
{
String phoneNo = "Nomor telepon saya adalah +6221-3011-9353";

System.out.println(censoredPhoneNumber(phoneNo));

}
}

Kesimpulan

Aritkel blog ini menunjukkan 2 penggunaan regular expression :
  1. mencocokkan pola teks dengan method matches() yang ada pada setiap objek String.
  2. mengganti suatu text yang cocok dengan suatu pola dengan bantuan dua class helper, Pattern and Matcher.

Mudah-mudahan ini dapat membantu Anda untuk memecahkan masalah penggunaan regular expression di Java.

Salam,

Friday, March 7, 2008

Using Regular Expression in Java

Regular expression (regex) is a very powerful construct to manipulate text. Originated its popularity from PERL language, it is now supported by almost every popular programming language including Java.

So, how do we use it in Java ?

It's easy, just take a look at following tips.

Matching a text pattern within a String object

To match a text pattern, we can use matches() method from String object. Its syntax definition as follow :

boolean java.lang.String.matches(String regex)

So, we see that matches() method take a pattern - which is a String object - and returns boolean value of a matching condition.

Example 1:

if(textToBeMatched.matches("[a-z A-Z]+"))
System.out.println("Text match with a series of alphabet and space character only pattern");


Example 2:

public class RegexTest {

public static void testPhoneNumber(String phoneNumber)
{
String phoneNumberPattern = "^\\+{0,1}[\\d]+[-\\d]+\\d$";

if(phoneNumber.matches(phoneNumberPattern))
System.out.println(phoneNumber + " is a correct phone number !");
else
System.out.println(phoneNumber + " is a wrong phone number !");
}
public static void main(String[] args)
{
testPhoneNumber("+6221-3011-9353"); //outputs a correct phone number
testPhoneNumber("-6221-3011-9353"); //outputs a wrong phone number
}
}


Replacing text that match a pattern

To replace a text matching a pattern we need to use two java.util classes, i.e : Pattern and Matcher.

First, we initialize the pattern with compile() static method of Pattern class. With which also create a Pattern object. We then feed a source text to the matcher() method which then create a Matcher object. The last thing for us to do is to manipulate the text within the object, so we replace text with Matcher's replaceAll() method.



Example:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexReplacementTest {

public static String censoredPhoneNumber(String phoneNumber)
{
String phonePattern = "(\\+{0,1}[\\d]+[-\\d]+\\d).*";

Pattern pattern = Pattern.compile(phonePattern);
Matcher matcher = pattern.matcher(phoneNumber);

return matcher.replaceAll("*censored*");
}

public static void main(String[] args)
{
String phoneNo = "My phone number is +6221-3011-9353";

System.out.println(censoredPhoneNumber(phoneNo));

}
}

Conclusion

This blog's article show how we use regular expression in two ways :
  1. to match a text pattern using String's matches() method.
  2. to replace string which match a text pattern with two helper classes, Pattern and Matcher.

Hope this article can help you to resolve text manipulation problem that you may have encountered.

Any comments to improve this article is greatly welcomed. Post your comment here or mail to feris@phi-integration.com.


Saturday, March 1, 2008

Tips : Menggunakan String

Objek dari String sering sekali kita gunakan sehari-hari, bahkan mungkin di setiap class dari Java kita terdapat rutin yang menangani String.

Berangkat dari pengalaman pribadi, kita sering sekali suka salah dalam memanipulasi String ini sehingga tidak dapat memaksimalkan penggunaannya.

Mungkin beberapa tips sederhana berikut ini dapat membantu kita menghadapi "kesulitan" tersebut dan membuat kita lebih mengenal dan nyaman bekerja dengan String :)

 

Escape Character

Di dalam String kita dapat memasukkan sekuen dari karakter escape yang terdiri dari satu karakter back slash (\) diikuti oleh karakter escape tersebut.

Beberapa escape character yang sering digunakan adalah :
- \n untuk baris baru
- \t untuk tab
- \\ untuk karakter back slash (\) itu sendiri

Contoh:

Output:

Feris
feris

 

Membandingkan String

Membandingkan String di java tidak bisa menggunakan operator equals (==) tetapi kita harus menggunakan method dari String yaitu equals dan equalsIgnoreCase.

Sesuai dengan nama methodnya, equals digunakan untuk membandingkan objek String secara case-sensitive (huruf kecil dan besar dibedakan) dan sebaliknya equalsIgnoreCase digunakan untuk membandingkan String secara case-insensitive (huruf besar dan kecil tidak dibedakan).

Contoh :

Output :

false
true

 

Menggabungkan String (Concatenation)

Untuk menggabungkan string kita bisa menggunakan beberapa cara yaitu dengan menggunakan method concat maupun dengan operator + (plus) dan += (plus sama dengan).

Contoh :

Output :

Monasmonas
monas
Monasmonas
Monasmonas

 

Konversi Otomatis (Automatic Conversion)

Pada saat kita menggunakan concatenation (penggabungan) antara objek string dengan suatu nilai atau variable yang bertipe primitive (int, char, float, dsbnya) maka secara otomatis data primitif tersebut akan dikonversi menjadi string.

Contoh :

Output :

Angka 1 adalah angka pertama bilangan bulat positif
100 x 2 = 400

 

Mengganti Nilai String Sederhana

Untuk mengganti nilai text dari String cukup menggunakan method replace dari String.

Contoh :

Output :

Feris T.