2012-02-22 41 views

Trả lời

4

Nó không hoạt động vì bạn đang cố gắng thay thế dấu nháy đơn ASCII (hoặc một dấu ngoặc kép) và ký tự trích dẫn bằng chuỗi rỗng, khi những gì thực sự trong chuỗi nguồn của bạn không phải là ký tự ASCII.

str.replace(/[“”‘’]/g,''); 

hoạt động.

+0

Cảm ơn! Đẹp và dễ dàng) – dokondr

36

Bạn có thể phải (hoặc muốn) sử dụng Unicode thoát:

var goodQuotes = badQuotes.replace(/[\u2018\u2019]/g, "'"); 

Đó là cho dấu nháy đơn hài hước; các mã cho các dấu ngoặc kép là 201C và 201D.

chỉnh sửa — như vậy, để thay thế hoàn toàn tất cả có dấu ngoặc kép ưa thích:

var goodQuotes = badQuotes 
    .replace(/[\u2018\u2019]/g, "'") 
    .replace(/[\u201C\u201D]/g, '"'); 
+0

>>> str.replace (/ [\ u2018 \ u2019]/g, "#"); Kết quả trong: "" Tôi không biết ý bạn là gì bởi # vinh quang, # "Alice nói." – dokondr

+0

Phải. Tại sao bạn đặt "#" trong chuỗi thay thế? Nếu bạn muốn thay thế cả hai loại trích dẫn, bạn cần hai cuộc gọi đến '.replace()'. Tôi sẽ cập nhật câu trả lời. – Pointy

+11

Bạn có thể mở rộng tập lệnh này bằng phần sau, thay thế dấu gạch ngang và dấu ba chấm mà bạn nhận được trong hộp văn bản khi dán từ Word v.v. \t \t \t '.place (/ [\ u2013 \ u2014]/g, '-') \t \t \t .replace (/ [\ u2026]/g, '...') ' –

0

Tôi biết đây là một câu hỏi cũ. Chỉ muốn thêm một cái gì đó. Dấu ngoặc kép bạn đang cố gắng thay thế được gọi là "Báo giá thông minh".

Hàm dưới đây bao gồm hầu hết trong số họ

public static String replaceSmartQuotes(String str) { 
    String retVal = str; 
    retVal = retVal.replaceAll("[\u2018\u2019\u201A\u201B\u2032\u2035]", "'"); 
    retVal = retVal.replaceAll("[\u201C\u201D\u201E\u201F\u2033\u2036]","\""); 
    return retVal; 
} 

Hope this helps một ai đó.

+2

' \ u2032, \ u2033, \ u2035, \ u2036' là ** không ** dấu ngoặc kép thông minh. Chúng là số nguyên tố và được sử dụng cho [mục đích] hoàn toàn khác nhau (https://en.wikipedia.org/wiki/Prime_ (biểu tượng)). Do đó, trong khi ở trên sẽ thay thế tất cả các dấu ngoặc kép thông minh, ở trên cũng sẽ thay thế bất kỳ sử dụng hợp pháp của các nhân vật chính. – kgryte

+5

Chuỗi JavaScript không có phương thức 'replaceAll'. Mã này được viết bằng Java và sẽ không hoạt động trong JavaScript. –

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