2013-10-29 10 views
9

StringLike của Scala có phương pháp replaceAllLiterally(literal: String, replacement: String): StringCó một lý do nào để sử dụng StringLike.replaceAllLiterally của Scala trên String.replace của Java không?

Điều này có vẻ rất giống với Chuỗi Java với phương pháp String replace(CharSequence target, CharSequence replacement).

Có lý do nào để sử dụng phiên bản Scala không?

(Không đi qua bước regex biên dịch sẽ dường như để cho phép phiên bản của Java được nhanh hơn, mặc dù tôi đã không làm chuẩn đó)

+0

Có. Lý do - bạn ghét phải thoát khỏi nhân vật. –

+0

Chỉ cần tra cứu nguồn java - hóa ra cho phiên bản CharSequence (trái ngược với phiên bản single-char), Java cũng chỉ biên dịch các regex bằng chữ. Có vẻ như không có sự khác biệt thực sự nào giữa họ ngoài tên và quá tải StringBuilder được đề cập bởi @RexKerr. – Jxtps

+0

@ om-nom-nom: Tôi đã tham khảo String.replace, không phải String.replaceAll (nơi bạn cần thực hiện thao tác thoát mà bạn đề cập). – Jxtps

Trả lời

6

Để tránh va chạm với replace trên StringBuilder. StringBuilder cũng là StringLike. Tại sao StringBuilderreplace không phải là thứ cần thay đổi, tôi không chắc chắn.

Không có lý do để sử dụng nó trên chuỗi trừ khi bạn muốn xử lý bất kỳ StringLike nào (ví dụ: cả chuỗi được bao bọc và công cụ xây dựng của chúng).

0

Nó rất hữu ích để sử dụng phương pháp Scala để tránh sự nhầm lẫn bị chôn vùi bởi thoát khỏi nhân vật. Người dùng Stack Overflow @pedrofurla@rampart81 giải thích tất cả điều này khá tốt here.

+2

'String.replaceAll' của Java sử dụng các regex và các ký tự thoát, nhưng' String.replace' thì không. Tôi không chắc đó là sự so sánh đúng. –

+0

Scala cũng có tất cả các phương thức 'replace *' của Java trong 'StringOps' thông qua chuyển đổi ngầm định. Tôi figured OP đã yêu cầu những gì làm cho phương pháp Scala duy nhất 'replaceAllLiterally' hữu ích hoặc thậm chí thích hợp hơn. – Vidya

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