2016-03-05 76 views
2

我正在嘗試將®,©,'和™音譯爲空白字符,意思是當它們被塞住時徹底刪除它們。音譯符號去除

以下是我試圖做的:

var tr = require('transliteration'); 
var slugify = require('transliteration').slugify; 

// replacement attempt 
tr("0xAE, 0xFEFF"); // ® 
tr("0xA9, 0xFEFF"); // © 
tr("0x2122, 0xFEFF"); // ™ 

slugify(name, { lowercase: true }) 

例如,當我像 「ABC®:123」 的名稱slugify使用,它音譯到:

abc-r-123

但是,我想要得到的名稱是這樣的:

abc-123

+0

據我所知,可以看出'0X ...'序列不具有在JavaScript字符串任何特殊含義。在任何情況下,圖書館似乎音譯這些字符就好了。我不想讓你再音譯,你應該先把它們移除,然後再傳給他們。 –

回答

1

請參見下面的步驟,我是怎麼做的:

console.log(tr("ABC ©")); //Output: ABC (c) 

var test1 = "ABC®: 123©" //test input to see results 

var regex = /\((r)\)|\((c)\)/g; //regex to remove ® and ©, update on desire 

console.log(tr(test1).replace(regex,'')); //Output: ABC: 123 

//now sluggify 
console.log(slugify(test1, { lowercase: true, separator: '-' })); //Output: abc-123 

進一步工作可在Github Here

+0

的工作方式就像你做到這一點一樣。我添加了一些其他的我不想要的子彈: 'tr(name).replace(/ \((r)\)| \((c)\)| \((tm)\)|®|©|™ ''''/ g,'');' – mayvn

+0

如果您在**音譯之前只是從源字符串**中刪除實際字符,那麼代碼不會更容易理解嗎? –

+0

你覺得上面的代碼中哪部分不安,以及你認爲字符沒有被刪除? –