Sử dụng phương pháp String.replaceAll[]
để thay thế dấu ngoặc đơn bằng dấu ngoặc kép, e. g. ________số 8. Phương thức replaceAll
sẽ trả về một chuỗi mới trong đó tất cả các lần xuất hiện của dấu ngoặc đơn được thay thế bằng dấu ngoặc kép
Chúng tôi truyền các tham số sau vào Chuỗi. phương pháp thay thế tất cả
- một chuỗi con để khớp trong chuỗi. Trong trường hợp này, chúng tôi khớp tất cả các dấu nháy đơn trong chuỗi
- một sự thay thế cho mỗi trận đấu. Chúng tôi thay thế mỗi trích dẫn đơn bằng một trích dẫn kép
Chúng ta phải xen kẽ các chuỗi, điều này làm cho phương thức replaceAll
rất khó đọc
Tôi thích sử dụng
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
1 để quấn dây hơn. Đoạn mã sau đạt được cùng một mục tiêuThay vì xen kẽ dấu ngoặc đơn và dấu ngoặc kép, chúng tôi đã sử dụng
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
1 khi truyền tham số cho phương thức replaceAll
Phương thức replaceAll
không thay đổi nội dung của chuỗi ban đầu, nó trả về một chuỗi mới với tất cả các kết quả được thay thế. Các chuỗi là bất biến trong JavaScript
Ngoài ra, bạn có thể sử dụng phương pháp
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
5Sử dụng phương pháp
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
6 để thay thế dấu ngoặc đơn bằng dấu ngoặc kép, e. g. const replaced = str.replaceAll["'", '"'];
0"const replaced = str.replaceAll["'", '"'];
1. Phương thức Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
5 sẽ trả về một chuỗi mới trong đó tất cả các lần xuất hiện của dấu ngoặc đơn được thay thế bằng dấu ngoặc képTham số đầu tiên chúng tôi chuyển đến Chuỗi. phương thức thay thế là một biểu thức chính quy khớp với tất cả các dấu nháy đơn trong chuỗi
Dấu gạch chéo về phía trước const replaced = str.replaceAll["'", '"'];
3 đánh dấu phần đầu và phần cuối của biểu thức chính quy
Chúng tôi đã sử dụng cờ const replaced = str.replaceAll["'", '"'];
4 [toàn cầu] vì chúng tôi muốn khớp tất cả các lần xuất hiện của một trích dẫn trong chuỗi chứ không chỉ lần xuất hiện đầu tiên
Chúng tôi đã sử dụng một trích dẫn kép cho chuỗi thay thế
Nếu bạn gặp khó khăn khi đọc một biểu thức chính quy, hãy xem trang phục regex này của MDN
Bạn chọn cách tiếp cận nào là vấn đề sở thích cá nhân. Tôi sẽ sử dụng phương pháp replaceAll
để tránh sử dụng các biểu thức thông thường
Sử dụng phương pháp String.replaceAll[]
để loại bỏ tất cả các dấu ngoặc kép khỏi một chuỗi, e. g.
if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
4. Phương thức if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
5 sẽ trả về một chuỗi mới đã loại bỏ tất cả các dấu ngoặc képChúng tôi đã chuyển các tham số sau cho Chuỗi. phương pháp thay thế tất cả
- một chuỗi con chúng tôi muốn khớp trong chuỗi. Trong trường hợp của chúng tôi, một chuỗi chứa dấu ngoặc kép
- Sự thay thế cho mỗi trận đấu. Chúng tôi cần xóa từng dấu ngoặc kép, vì vậy chúng tôi thay thế dấu ngoặc kép bằng các chuỗi rỗng
Phương thức
if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
6 không thay đổi chuỗi gốc. Nó trả về một chuỗi mới với tất cả các kết quả khớp được thay thế. Các chuỗi là bất biến trong JavaScriptNgoài ra, bạn có thể sử dụng phương pháp
if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
5Để xóa dấu ngoặc kép khỏi một chuỗi
- Gọi phương thức
5 trên chuỗiif [input != null && input.length[] >= 2 && input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] { result = input.substring[1, input.length[] - 1]; }
- Phương thức
5 sẽ thay thế mỗi lần xuất hiện của một trích dẫn kép bằng một chuỗi rỗngInput: "text wrapped in double quotes" Result: text wrapped in double quotes
- Phương thức
5 sẽ trả về một chuỗi mới đã loại bỏ tất cả các dấu ngoặc képInput: "text wrapped in double quotes" Result: text wrapped in double quotes
Tham số đầu tiên chúng tôi chuyển đến Chuỗi. phương thức thay thế là một biểu thức chính quy mà chúng tôi muốn khớp trong chuỗi
Hai dấu gạch chéo về phía trước
String result = input.replaceAll["\"", ""];
1 đánh dấu phần đầu và phần cuối của biểu thức chính quyChúng tôi sử dụng cờ
String result = input.replaceAll["\"", ""];
2 [toàn cầu] vì chúng tôi muốn so khớp tất cả các lần xuất hiện của một trích dẫn kép trong chuỗi chứ không chỉ lần xuất hiện đầu tiênNếu bạn cần trợ giúp để đọc một biểu thức chính quy, hãy xem trang phục regex này của MDN
Tham số thứ hai mà chúng tôi truyền cho phương thức
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
5 là một chuỗi rỗng vì chúng tôi muốn xóa tất cả các dấu ngoặc kép khỏi chuỗiPhương thức
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
5 không thay đổi chuỗi ban đầu, nó trả về một chuỗi mớiNgoài ra, bạn có thể sử dụng phương pháp
if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
42 và if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
43Để xóa dấu ngoặc kép khỏi một chuỗi
- Sử dụng phương pháp
44 để tách chuỗi trên mỗi trích dẫn képif [input != null && input.length[] >= 2 && input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] { result = input.substring[1, input.length[] - 1]; }
- Sử dụng phương thức
43 để tham gia mảng chuỗiif [input != null && input.length[] >= 2 && input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] { result = input.substring[1, input.length[] - 1]; }
- Chuỗi mới sẽ không chứa bất kỳ dấu ngoặc kép nào
chuỗi. phương thức split chia chuỗi thành một mảng các chuỗi con dựa trên dấu tách được cung cấp
Trong hướng dẫn này, chúng ta sẽ nghiên cứu các cách tiếp cận khác nhau để loại bỏ các dấu ngoặc kép bắt đầu và kết thúc khỏi một Chuỗi trong Java
Những gì chúng ta sẽ khám phá ở đây có thể hữu ích cho việc xử lý văn bản được trích xuất từ tệp hoặc nhận được từ các nguồn khác
2. Cách tiếp cận đơn giản. phương thức chuỗi con
Đầu tiên, chúng ta sẽ bắt đầu với một cách tiếp cận đơn giản bằng cách sử dụng phương thức chuỗi con. Phương thức này có thể được gọi trên một đối tượng Chuỗi để trả về một chuỗi con cụ thể
Phương thức yêu cầu hai tham số
- beginIndex — chỉ mục của ký tự mà chuỗi con sẽ bắt đầu
- end Index - chỉ mục sau nơi chuỗi con sẽ kết thúc
Do đó, xét rằng Chuỗi đầu vào của chúng ta được đặt trong dấu ngoặc kép, chúng ta có thể sử dụng phương thức chuỗi con
String input = "\"text wrapped in double quotes\"";
String result = input.substring[1, input.length[] - 1];
System.out.println["Input: " + input];
System.out.println["Result: " + result];
Bằng cách thực thi đoạn mã trên, chúng ta có đầu ra sau
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
Nếu chúng tôi không chắc liệu Chuỗi có được đặt trong dấu ngoặc kép hay không, chúng tôi có thể kiểm tra nó trước khi chạy phương thức chuỗi con
if [input != null && input.length[] >= 2
&& input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
result = input.substring[1, input.length[] - 1];
}
Trong ví dụ trên, chúng tôi đã kiểm tra xem Chuỗi có ít nhất hai ký tự và nó bắt đầu và kết thúc bằng dấu ngoặc kép
3. Sử dụng phương pháp thay thế tất cả
Ngoài phương thức substring, chúng ta cũng có thể sử dụng phương thức replaceAll. Phương thức này thay thế tất cả các phần của Chuỗi khớp với một biểu thức chính quy đã cho. Sử dụng replaceAll, chúng tôi có thể loại bỏ tất cả các lần xuất hiện của dấu ngoặc kép bằng cách thay thế chúng bằng các chuỗi trống
String result = input.replaceAll["\"", ""];
Một mặt, cách tiếp cận này có ưu điểm là loại bỏ tất cả các lần xuất hiện của dấu ngoặc kép, ngay cả khi chuỗi có nhiều dòng. Mặt khác, với cách tiếp cận này, chúng tôi không thể chỉ xóa dấu ngoặc kép ở đầu và cuối Chuỗi
Để loại bỏ dấu ngoặc kép ngay từ đầu và cuối Chuỗi, chúng ta có thể sử dụng biểu thức chính quy cụ thể hơn
String result = input.replaceAll["^\"|\"$", ""];
Sau khi thực hiện ví dụ này, các lần xuất hiện dấu ngoặc kép ở đầu hoặc cuối Chuỗi sẽ được thay thế bằng chuỗi rỗng
Để hiểu cách tiếp cận này, hãy chia nhỏ biểu thức chính quy của chúng ta
Đầu tiên, chúng ta có ký hiệu dấu mũ [^], theo sau là dấu ngoặc kép thoát [\”] để khớp với dấu ngoặc kép ở đầu Chuỗi. Sau đó, có một biểu tượng ống [. ] để chỉ ra một phương án phù hợp, tương tự như toán tử logic OR
Cuối cùng, chúng tôi đã thoát khỏi dấu ngoặc kép, theo sau là ký hiệu đô la [$] để khớp dấu ngoặc kép ở cuối Chuỗi
4. Dùng Ổi
Một cách tiếp cận khả thi khác để xóa dấu ngoặc kép ở đầu và cuối Chuỗi là sử dụng lớp CharMatcher từ thư viện Guava
String result = CharMatcher.is['\"'].trimFrom[input];
Cách tiếp cận này dễ hiểu hơn và chỉ xóa các trích dẫn đầu và cuối khỏi Chuỗi. Tuy nhiên, để phương pháp này hoạt động, chúng ta cần thêm thư viện ổi vào dự án của mình
com.google.guava
guava
${guava-version}
Trong trường hợp này, chúng tôi cần đặt thuộc tính ${guava-version} thành phiên bản mà chúng tôi muốn sử dụng
5. Phần kết luận
Trong bài viết này, chúng tôi đã khám phá các tùy chọn khác nhau để xóa dấu ngoặc kép ở đầu và cuối Chuỗi. Chúng ta có thể áp dụng bất kỳ phương pháp nào trong số này vào thực tế và mỗi phương pháp đều có ưu điểm và nhược điểm
Ví dụ: khi sử dụng thư viện Guava, chúng tôi có một giải pháp đơn giản và thanh lịch. Tuy nhiên, nếu Guava không được bao gồm trong dự án của chúng tôi, giải pháp này sẽ yêu cầu bổ sung một phụ thuộc mới