2009-05-27 35 views
5

Tôi có một số javascript đọc một số cookie và thực hiện một số kết hợp. Tôi đang sử dụng các nhóm để nắm bắt các phần của cụm từ thông dụng và sử dụng chúng sau này. Tôi có một vấn đề với các ký tự unicode mặc dù. Nếu tôi có một ký tự như \ u25BA ►, khi tôi tìm thấy ký tự này trong một nhóm, nó trả về chuỗi '\ u25BA' thay vì ký tự unicode mà tôi đang tìm kiếm. Nếu tôi chỉ định ký tự, tôi có thể khắc phục sự cố, nhưng tôi không thể làm cho nó hoạt động bình thường hơn. Sau đây sẽ làm việc như tôi muốn nó:Đối sánh Javascript và thay thế bằng unicode

var matches=theOnclick.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/); 
var expand=matches[1].replace(/\\u25BA/, '\u25BA'); 

nhưng điều này sẽ không làm việc:

var expand=matches[1].replace(/\\u([0-9A-Z])/, '\u\1'); 

bất cứ đề nghị?

Thông tin thêm: Cảm ơn câu trả lời của bạn. Hãy để tôi thêm một chút nền nữa. Tôi nghĩ rằng vấn đề là tôi đang nhận được các trận đấu của tôi từ một "onclick" trên một khoảng. Tôi đã bao gồm một ví dụ chi tiết hơn một chút bên dưới. Nếu tôi có một chuỗi bình thường với các ký tự unicode trong nó, khi tôi làm một trận đấu, tôi nhận được các ký tự unicode. Tuy nhiên, khi tôi lấy chuỗi từ giá trị của onclick, tôi nhận được các chuỗi thoát unicode thay thế. Vì vậy, tôi đã cố gắng để chuyển đổi các chuỗi thoát unicode trở lại thành các ký tự unicode. Tôi hy vọng điều đó đúng. Có lẽ có một cách khác để làm điều đó.

Trong ví dụ bên dưới, thanh hoạt động như tôi muốn, và foo thì không.

<html> 
<body> 
<span id='foo' onclick='expandCollapse(event, "►", "▼");'>foo</span> 
<script type='text/javascript'> 
var foo= document.getElementById('foo').onclick+''; 
alert(foo); 
var foomatches=foo.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/); 
alert(foomatches); 
var bar='expandCollapse(event, "►", "▼");' 
var barmatches=bar.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/); 
alert(barmatches); 
</script> 
</body> 
</html> 

Trả lời

1

gì về

var expand=matches[1].replace(/\\u([0-9A-Z])/, '\1'); 

? Tôi không nghĩ rằng bạn cần phải trốn thoát \u ở đó.

3

Tôi nghĩ rằng \ 1 của bạn là sai. Nó phải là:

"\u2603".replace(/(.)/, "$1")) 

$ 1 là tham chiếu ngược trong văn bản thay thế.

Nhưng tôi không hoàn toàn chắc chắn những gì bạn đang cố gắng làm. Lưu ý \ u chỉ có thể được sử dụng với unicode literals. Vì vậy, \ u trong regex phù hợp với một chữ \ sau đó một u chữ. Và \ u trong văn bản thay thế là u.

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