2017-09-05 98 views
0

我有一個似乎包含特殊字符一個字符串:特殊字符歐元

my_str         # [1] "0€ de frais de courtage" 
my_str == "0€ de frais de courtage"  # [1] FALSE 
gsub("€","X",my_str)      # [1] "0€ de frais de courtage" 
gsub("€","X","0€ de frais de courtage") # [1] "0X de frais de courtage" 

我想通過標準字符即一個我可以Alt-gr + E型來取代它。

這些字符串來自文件名我list.files

我怎麼能這樣做了?

編輯:

utf8ToInt(my_str) 
# [1] 48 8364 32 100 101 32 102 114 97 105 115 32 100 101 32 99 111 117 114 116 97 103 101 
utf8ToInt(stringi::stri_enc_toutf8("0€ de frais de courtage")) 
# [1] 48 128 32 100 101 32 102 114 97 105 115 32 100 101 32 99 111 117 114 116 97 103 101 
+0

我米困惑'Alt鍵GR + E'打開'Edit'。也就是爲什麼是'GSUB( 「€」, 「X」,my_str)'和'GSUB( 「€」, 「X」, 「0€德干酪德COURTAGE」)'給不同的結果?什麼是'X'? – Sotos

+0

在我的鍵盤上,我用'Alt gr + E'獲得了一個'€'符號,但在歐洲可能只有這種情況。 ''X「'只是一個隨機的字符來顯示出什麼錯誤,爲什麼它不會給出相同的結果正是我想知道的:)。它更清楚嗎? U + 20AC: –

+0

當我複製粘貼你的'my_str ==「0€德干酪德COURTAGE」'行了,我在AZERTY鍵盤上使用ALTGR + E得到相同的性格比我會的。所不同的可能已丟失張貼到計算器的時候,你應該嘗試張貼另一種表示(Unicode作爲我做了,甚至生HEX) – Aaron

回答

0

琴絃出現相同但字符是不同的。

在我在,我們看到,對於普通代碼128而麻煩的代碼8364後的底部編輯。

果然:

gsub(intToUtf8(8364),"X",my_str) # [1] "0X de frais de courtage" 

所以我一直在尋找解決的辦法是:

gsub(intToUtf8(8364),"€",my_str) 

它取代了 「錯誤」 性格與 「常規」 128azerty alt gr + E符號。