Kamis, 08 Mei 2008

Menghitung Jumlah Kata pada String

Kali ini akan diberikan suatu tips sederhana untuk menghitung jumlah kata pada suatu string dengan menggunakan Borland Delphi. Silakan saja Anda simak tulisan ini.

Siapkan Button1 dan ketikkan kode program di bawah ini pada event OnClick:

procedure TForm1.Button1Click(Sender: TObject);

function JumlahKata(S: string): integer;
begin
if S='' then
Result := 0
else
begin
Result := 1;
while Pos(SPASI, S)>0 do begin
Delete(S, 1, Pos(SPASI,S));
Inc(Result);
end;
end;
end;

var
Kalimat: string;
begin
Kalimat := '';
if InputQuery('Ketikkan sembarang kalimat',
'Kalimat: ',
Kalimat) then
begin
ShowMessage('Jumlah kata: ' +
IntToStr(JumlahKata(Kalimat)));
end;
end;

Jika kita ketikkan “Borland Delphi”, program akan menampilkan pesan Jumlah kata: 2.

Tetapi, fungsi JumlahKata() di atas masih memiliki kelemahan. Karena berpatokan pada spasi, program akan ngaco jika kita ketikkan misalnya “Borland Delphi”, “ Borland Delphi”, atau “Borland Delphi “.

Oleh karena itu, fungsi JumlahKata() di atas perlu dimodifikasi sebagai berikut:

function JumlahKata(S: string): integer;
const
SPASI_GANDA = ' ';
SPASI = ' ';
begin
if S='' then
Result := 0
else
begin
//Hapus spasi ganda
while Pos(SPASI_GANDA, S)>0 do
S := StringReplace(S, SPASI_GANDA, SPASI, [rfReplaceAll]);
//Hapus spasi di awal kalimat
if S[1]=SPASI then Delete(S, 1, 1);
//Hapus spasi di akhir kalimat
if S[Length(S)]=SPASI then Delete(S, Length(S), 1);

Result := 1;
while Pos(SPASI, S)>0 do begin
Delete(S, 1, Pos(SPASI,S));
Inc(Result);
end;
end;
end;

Namun, fungsi di atas masih memiliki kelemahan lainnya jika kalimatnya berupa “Borland Delphi . ”. Program akan menganggap titik (atau simbol lain) yang di dahului oleh spasi sebagai satu kata. Oleh karena itu, kita modifikasi lagi fungsi JumlahKata() di atas sebagai berikut:

function JumlahKata(S: string): integer;
const
SPASI_GANDA = ' ';
SPASI = ' ';
//Anda bisa tambahkan simbol lainnya
Simbol = '():;[]{}"''`!,?.';
var
i: byte;
begin
if S='' then
Result := 0
else
begin
//Ubah simbol2x menjadi spasi
for i:=1 to Length(Simbol) do
S := StringReplace(S, Simbol[i], SPASI, [rfReplaceAll]);

//Hapus spasi ganda
while Pos(SPASI_GANDA, S)>0 do
S := StringReplace(S, SPASI_GANDA, SPASI, [rfReplaceAll]);

//Hapus spasi di awal kalimat
if S[1]=SPASI then Delete(S, 1, 1);

//Hapus spasi di akhir kalimat
if S[Length(S)]=SPASI then Delete(S, Length(S), 1);

Result := 1;
while Pos(SPASI, S)>0 do begin
Delete(S, 1, Pos(SPASI,S));
Inc(Result);
end;
end;
end;

Terima Kasih

Credit To 1st Uploader


Baca Juga Artikel Menarik Lainnya :

3 komentar:

selamat belanja.com mengatakan... Best Blogger Tips

kalau ambil huruf tertentu gmn ya ?

Mas Muktiaji mengatakan... Best Blogger Tips

postingan yang sangat bagus mas,,

Mas Muktiaji mengatakan... Best Blogger Tips

//Ubah simbol2x menjadi spasi
for i:=1 to Length(Simbol) do
S := StringReplace(S, Simbol[i], SPASI, [rfReplaceAll]);

kog Length(Simbol) mas??
bukan Length(S) ?

kan loop nya sepanjang string,, bukan spanjang string dalam simbol

Posting Komentar