Đối đầy đủ (mặc dù vài câu trả lời tốt đã được cung cấp, Tôi thích nhất của Mark và Joachim), dưới đây là hai phiên bản dựa trên String.split(regex) và String.split(regex, limit):
sửa chữa
(Chỉnh sửa, lỗi :)
boolean containsAtLeastTwoAsterisks = ("_" + myString + "_").split("\\*", 3).length == 3;
boolean containsExactlyTwoAsterisks = ("_" + myString + "_").split("\\*").length == 3;
tôi đã viết a little benchmark dựa trên câu trả lời của chúng tôi (tôi biết, tiêu chuẩn không có nghĩa là nhiều, nhưng họ đang vui vẻ, và tôi có lẽ là tào lao, tôi biết .) Dù sao, đây là kết quả cho chạy mẫu:
*********************************************************************************
Testing strings with one or less asterisk
Processor: bhups
Finished. Duration: 40 ms, errors: 0
Processor: Bozho (loop version)
Finished. Duration: 33 ms, errors: 0
Processor: Bozho (regex version)
Finished. Duration: 806 ms, errors: 0
Processor: Joachim Sauer
Finished. Duration: 24 ms, errors: 0 <-- winner
Processor: Mark Byers
Finished. Duration: 1068 ms, errors: 0
Processor: seanizer
Finished. Duration: 408 ms, errors: 0
*********************************************************************************
Testing strings with exactly two asterisks
Processor: bhups
Finished. Duration: 14 ms, errors: 0 <-- winner
Processor: Bozho (loop version)
Finished. Duration: 21 ms, errors: 0
Processor: Bozho (regex version)
Finished. Duration: 693 ms, errors: 0
Processor: Joachim Sauer
Finished. Duration: 14 ms, errors: 0 <-- winner
Processor: Mark Byers
Finished. Duration: 491 ms, errors: 0
Processor: seanizer
Finished. Duration: 340 ms, errors: 0
*********************************************************************************
Testing strings with more than two asterisks (not all processors will be included)
Skipping processor bhups
Processor: Bozho (loop version)
Finished. Duration: 63 ms, errors: 0 <-- winner
Skipping processor Bozho (regex version)
Skipping processor Joachim Sauer
Processor: Mark Byers
Finished. Duration: 1555 ms, errors: 0
Processor: seanizer
Finished. Duration: 860 ms, errors: 0
Có vẻ như không phải regex nhanh hơn rất nhiều so với regex. Đó là những gì bạn mong đợi, tôi đoán vậy.
CHỈNH SỬA: cố định người chiến thắng sai. xin lỗi, joachim
Nguồn
2010-07-28 08:47:22
Ít nhất hai hoặc hai chính xác? –
Nó phải chính xác hai – Achaius