Lớp StringTokenizer trong Java

Một lớp StringTokenizer có thể sử dụng để tách một chuỗi thành các phần tử (token) nhỏ hơn. Ví dụ, mỗi từ trong một câu có thể coi như là một token. Tuy nhiên, lớp StringTokenizer đã đi xa hơn việc phân tách các từ trong câu. Để tách ra các thành token ta có thể tuỳ biến chỉ ra một tập dấu phân cách các token khi khởi tạo đối tượng StringTokenizer. Nếu ta không chỉ ra tập dấu phân cách thì mặc định là dấu trắng (space, tab, …). Ta cũng có thể sử dụng tập các toán tử toán học (+, *, /, và -) trong khi phân tích một biểu thức

image

Khởi tạo một lớp StringTokenizer

Phương thức xây dựngÝ nghĩaStringTokenizer(String)Tạo ra một đối tượng StringTokenizer mới dựa trên chuỗi được chỉ định.StringTokenizer(String, String)Tạo ra một đối tượng StringTokenizer mới dựa trên (String, String) chuỗi được chỉ định và một tập các dấu phân cách.StringTokenizer(String, String, boolean)Tạo ra một đối tượng StringTokenizer dựa trên chuỗi được chỉ định, một tập các dấu phân cách, và một cờ hiệu cho biết nếu các dấu phân cách sẽ được trả về như cáctoken hay không.

Các phương thức khởi tạo ở trên được minh họa trong các ví dụ sau:

StringTokenizer

st1

=

new

StringTokenizer

(

"A Stream of words"

A

Stream

of words

)

;

StringTokenizer

st2

=

new

StringTokenizer

(

"4*3/2-1+4"

,

"+-*/"

,

true

)

;

StringTokenizer

st3

=

new

StringTokenizer

(

"aaa,bbbb,ccc"

,

","

)

;

Trong câu lệnh đầu tiên, StringTokenizer của st1 sẽ được xây dựng bằng cách sử dụng các chuỗi được cung cấp và dấu phân cách mặc định. Dấu phân cách mặc định là khoảng trắng, tab, các ký tự xuống dòng. Các dấu phân cách này thì chỉ sử dụng khi phân tách văn bản, như với st1.

Câu lệnh thứ hai trong ví dụ trên xây dựng một đối tượng StringTokenizer cho các biểu thức toán học bằng cách sử dụng các ký hiệu *, +, /, và -.

Câu lệnh thứ 3, StringTokenizer của st3 sử dụng dấu phẩy như một dấu phân cách.

Lớp StringTokenizer cài đặt interface Enumeration. Vì thế, nó bao gồm các phương thức hasMoreElements() nextElement(). Các phương thức có thể sử dụng của lớp StringTokenizer được tóm tắt trong bảng sau:

Phương thứcMục đíchcountTokens()Trả về số các token còn lại.hasMoreElements()Trả về True nếu còn có token đang được đánh dấu trong chuỗi. Nó thì giống hệt như hasMoreTokens.hasMoreTokens()Trả về True nếu còn có token đang được đánh dấu trong chuỗi. Nó giống hệt như hasMoreElements.nextElement()Trả về token kế tiếp trong chuỗi. Nó thì giống như nextToken.nextToken()Trả về Token kế tiếp trong chuỗi. Nó thì giống như nextElement.nextToken(String)Thay đổi bộ dấu phân cách bằng chuỗi được chỉ định, và sau đó trả về token kế tiếp trong chuỗi.

Hãy xem xét chương trình đã cho ở bên dưới. Trong ví dụ này, hai đối tượng StringTokenizer đã được tạo ra. Đầu tiên, “st1” được sử dụng để phân tách một biểu thức toán học. Thứ hai, “st2” phân tách một dòng của các trường được phân cách bởi dấu phẩy. Cả hai tokenizer, phương thức hasMoreTokens()nextToken() được sử dụng đế duyệt qua tập các token, và hiển thị các token.

import

java

.

util

.

*

;

public

class

StringTokenizerImplementer

{

public

static

void

main

(

String

args

[

]

)

{

String

mathExpr

=

"4*3+2/4"

;

StringTokenizer

st1

=

new

StringTokenizer

(

mathExpr

,

"*+/-"

,

true

)

;

System

.

out

.

println

(

"Tokens of mathExpr: "

)

;

while

(

st1

.

hasMoreTokens

(

)

)

System

.

out

.

println

(

st1

.

nextToken

(

)

)

;

String

commas

=

"field1,field2,field3,and field4"

;

StringTokenizer

st2

=

new

StringTokenizer

(

commas

,

","

,

false

)

;

System

.

out

.

println

(

"Comma-delimited tokens: "

)

;

while

(

st2

.

hasMoreTokens

(

)

)

System

.

out

.

println

(

st2

.

nextToken

(

)

)

;

}

}

Kết quả chạy chương trình được mô tả như hình dưới.

image