2013-02-19 36 views
7

Tôi có một câu hỏi nhanh chóng, Tôi có đoạn mã sauJava: loại bỏ tất cả các ký tự sau thời điểm

String chapterNumber = "14.2.1"; 

làm thế nào tôi có thể đạt được để có được một String như sau ra khỏi tôi "chapterNumber"

String mainChapterNumber = "14"; 

Edit: tôi muốn tất cả các số trong một int/string (không quan trọng với tôi) lên đến điểm đầu tiên

+2

Và bạn đã thử một cái gì đó? –

+0

'indexOf()' và 'chuỗi con()' là bạn của bạn. – jlordo

+0

Tôi đã thử sth Tôi tìm thấy trên một diễn đàn như: 'chapterNumber..replaceAll (" //.*$ "," ");' nhưng điều đó không làm việc –

Trả lời

25

Nếu nó chỉ có phần đầu tiên của chuỗi đầu vào mà bạn muốn, bạn nên làm

String mainChapterNumber = chapterNumber.split("\\.", 2)[0]; 

Đối số thứ hai của split (2) chỉ ra rằng chúng ta chỉ nên chia trên đầu tiên xảy ra .; nó nhanh hơn tách trên tất cả các trường hợp của . đó là những gì sẽ xảy ra nếu chúng tôi không cung cấp đối số thứ hai này.


Tài liệu liên quan

+1

Cảm ơn, chính xác những gì tôi cần –

+0

Chỉ tò mò về cách phân bổ bộ nhớ trong trường hợp này khi sử dụng phương pháp tách thay vì chuỗi con. Cái nào sẽ là tốt nhất khi chúng ta phân tích các chuỗi lớn? – Slowcoder

+1

cảm ơn !, chỉ là những gì tôi đang tìm kiếm! – TharakaNirmana

1

Kể từ khi chúng tôi không có bất kỳ bằng chứng của bạn thực sự cố gắng một cái gì đó, tôi sẽ làm một gợi ý thay vì đem lại cho bạn mã.

Cố gắng chơi với các chỉ mục của chuỗi của bạn. Tìm chỉ mục của dấu chấm đầu tiên và sau đó sử dụng phương thức substring để giữ chuỗi con giữa nguồn gốc và sự xuất hiện đó.

+0

Bất cứ ai quan tâm để bình luận về downvote? Có phải vì tôi không cho ăn thìa một OP không cho thấy dấu hiệu nỗ lực nào? Tôi đoán như vậy, vì một câu trả lời sau đó cho phép mã đầy đủ rõ ràng được upvoted. – Gamb

4
String chapterNumber = "1.2.1"; 
int index = chapterNumber.indexOf("."); 
String mainChapterNumber = chapterNumber.substring(0,index); 
+0

Downvoter xin vui lòng bình luận. –

0

Hãy thử như dưới đây ...

String chapterNumber = "1.2.1"; 
String[] getdt = chapterNumber.split("\\."); 
String mainChapterNumber = getdt[0]; 
+0

@jlordo: đúng, tôi chỉ thêm '\\' trước mặt '.' – Pandian

+0

Tôi đã xóa -1 vì câu trả lời của bạn không còn lỗi nữa. – jlordo

0
String mainChapterNumber = chapterNumber.substring(0,chapterNumber.indexOf(".")); 
8

Chỉ cần sử dụng như sau:

String mainChapterNum = chapterNumber.substring(0, chapterNumber.indexOf(".")); 

này sẽ trả về một chuỗi con của số chương hiện tại của bạn bắt đầu từ ký tự đầu tiên được đặt trong chỉ mục số 0 và kết thúc trước lần xuất hiện đầu tiên của "."

+0

Điều này trong thực tế là một giải pháp hợp lệ là tốt, nó làm việc cho tôi, Cảm ơn. –

1

Có nhiều cách để thực hiện việc này. đơn giản nhất tôi muốn giới thiệu là sử dụng một chuỗi con, và indexOf: Như thế này:

String result = chapterNumber.substring(0, chapterNumber.indexOf(".")); 

Một cách khác để làm việc đó sẽ là như thế này:

String result = chapterNumber.split("\\.")[0]; 
0

Chỉ cần cho các hồ sơ, giải pháp khác sử dụng Guava's splitter:

String mainChapterNumber = Iterables.get(Splitter.on('.').split(chapterNumber), 0); 

Điều này có lợi thế là không sử dụng máy móc biểu thức chính quy (không nhẹ, không sử dụng giải pháp được chấp nhận trong vòng lặp).

Các vấn đề liên quan