我有一個接收輸入的API例如;如何刪除字符串中的某些字符而不創建空格
@message.to = params[:to]
理想地應當被髮送的輸入像"256773485930"
作爲電話號碼。 然而,一些用戶更喜歡發送號碼,如"+256773485930"
我使用@message.to = params[:to].gsub("+", "")
嘗試,但它創造這樣
" 256773485930"
輸入的新字符串添加一個空格。 如何刪除+
如果沒有在字符串前面添加空格?
我有一個接收輸入的API例如;如何刪除字符串中的某些字符而不創建空格
@message.to = params[:to]
理想地應當被髮送的輸入像"256773485930"
作爲電話號碼。 然而,一些用戶更喜歡發送號碼,如"+256773485930"
我使用@message.to = params[:to].gsub("+", "")
嘗試,但它創造這樣
" 256773485930"
輸入的新字符串添加一個空格。 如何刪除+
如果沒有在字符串前面添加空格?
gsub
應該可以工作,但可能輸入的字符串也有前面的空格,所以你可以做params[:to].strip.gsub("+", "")
這將刪除字符串之前和之後的空格。
如果你想保持數字更強大的不僅是params[:to].gsub(/[^\d]/,"")
感謝這工作得很好! – acacia
這是一個常見的問題。前段時間Google開放libphonenumber,它能夠以多種格式解析電話號碼,然後再以不同的標準格式輸出。圖書館被移植到Ruby Gem named global_phone。我會建議使用這個寶石,因爲它可以處理很多我們甚至可能不會想到的邊緣案例。用法示例:
require 'global_phone'
GlobalPhone.db_path = 'global_phone.json' # see Github page for more info
# somewhere else
@message.to = GlobalPhone.normalize(params[:to])
這將每個數字轉換爲規範化的E.164國際字符串格式的電話號碼。這意味着轉換後的電話號碼實際上以+
開頭,這是存儲電話號碼的「正確」和標準方式。
爲什麼不去掉所有非數字字符? 's.gsub(/ \ D /,'')' –
陳述錯誤。 '「+256773485930」.gsub(「+」,「」)'不返回'「256773485930」'。 – sawa
這就是我得到的錯誤,因爲它在它所在的位置創建了一個空間。 – acacia