Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Lấy ra họ hoặc tên hoặc chữ lót trong tên trong java

Đây là yêu cầu cơ bản về việc ngắt một chuỗi xác định hoặc không xác định trong một chuỗi khác.

Yêu cầu, tách riêng tên, họ và chữ lót từ họ tên do người dùng nhập vào
Code:
Nguyen Van A
Nếu dùng theo cách split thì
Code:
public static void main(String[] args) { String sName = "Nguyen Van A"; System.out.println("Ho: " + sName.split(" ")[0]); System.out.println("Chu lot: " + sName.split(" ")[1]); System.out.println("Ten: " + sName.split(" ")[2]); }
Nhưng có rất nhiều trường hợp khác nhau có thể xảy ra, ví dụ
Tên dài
"Lương Nguyễn Quỳnh Trang"
Click to expand...
Tên ngắn
"Trần Nhật"
Click to expand...
Trường hợp gây cho split gần như bó tay là nhập khoảng trắng tùm lum
Code:
" Lương Nguyễn Quỳnh Trang "
Chúng ta thảo luận thêm để tìm được giải pháp tối ưu nhé.
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Neu mà có khoảng trắng, thì cần phải chuẩn hóa. Sau dó split là ra
2 Lượt thích

Tớ đã từng chuẩn hóa nó có dùng spit đó, cậu chuẩn hóa thế nào?
0 Lượt thích

mình thì sử dụng thằng split khi viết soft Exam Mix 1.0. HUy lưu dữ liệu dưới dạng file theo 1 cấu trúc mình đặt ra, khi đọc file đó thì dĩ nhiên sử dụng split rồi ^_^ hehe
2 Lượt thích

Dùng split chia một văn bản lớn chậm hơn việc dùng if kiểm tra rồi chia thành mảng, rất là chậm, hình như xử lý nhiều lắm đó.
2 Lượt thích

Theo cậu thì bỏ hết khoảng trắng thừa rồi mới .split(" ") à, vậy có rắc rối không ta.
0 Lượt thích

Các bố cứ quan trọng hóa vấn đề 

Dùng while nhé
nếu tìm thấy 2 dấu nháy thì tiếp tục
nếu thấy 2 dấu nháy thì thay thế nó bằng 1 dấu nháy.
=> ra chuỗi ngon.
1 Lượt thích

Tớ nói là code mà, xem lần đầu tiên chạy nó ra kết quả như ý không. Nếu cách làm đó đưa chuỗi đã bỏ khoảng trắng hai đầu vào ms word dùng raplace all 2 khoảng trắng thành 1 khoảng trắng thì có xong ngay đâu.
1 Lượt thích

Theo mình thì có thể dùng lớp StringTokenizer trong gói util. Lớp StringTokenizer dùng để tách 1 chuỗi thành các phần tử nhỏ hơn, và dù có bao nhiêu dấu cách(hoặc - + - * / .v.v.) thì nó cũng cho bay hết.
Có 3 phương thức xây dựng:
-StringTokenizer(String): Tạo ra 1 đối tượng StringTokenizer dựa trên 1 chuỗi nào đó.
-StringTokenizer(String, String): Tạo ra 1 đối tượng StringTokenizer dựa trên 1 chuỗi nào đó và 1 tập các dấu phân cách, nếu k khai báo tập các dấu phân cách thì mặc đinh là dấu trắng.
-StringTokenizer(String, String, boolean): Tạo ra 1 đối tượng StringTokenizer dựa trên 1 chuỗi nào đó và 1 tập các dấu phân cách, và kt xem các dấu phân cách có được trả về hay k.
Ví dụ: 
package StringTokenizer;

import java.util.*;
import java.io.*;

public class Name {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Nhap ten cua ban: ");
String name = in.readLine();
StringTokenizer str = new StringTokenizer(name);
int count = str.countTokens();

switch(count) {
case 2: 
System.out.println("Ho: " + str.nextToken());
System.out.println("Ten: " + str.nextToken());
break;

case 3: 
System.out.println("Ho: " + str.nextToken());
System.out.println("Chu lot: " + str.nextToken());
System.out.println("Ten: " + str.nextToken());
break;

case 4: 
System.out.println("Ho: " + str.nextToken());
System.out.println("Chu lot: " + str.nextToken() + " " + str.nextToken());
System.out.println("Ten: " + str.nextToken());
break;
}
}
}

Còn 1 trường hợp nữa là những ai có tên kép như: Vân Anh, Đức Anh, Hoàng Anh... thì có thể kt bằng cách sử dụng phương thức endsWith() của lớp String với tham số là "Anh".

Mình mới học Java được 1 thời gian, nếu có sai sót mong mọi người góp ý.
1 Lượt thích

Cám ơn bạn đã chia sẻ nhé
 
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng