簡體   English   中英

嘗試從字符串RUBY中刪除空格

[英]Trying to remove spaces from a string RUBY

如標題所示,我正在嘗試編寫一個刪除空格的函數。 這是我到目前為止的位置,但是似乎我缺少了一些東西。

def remove(x)
  if x.include? " "
    x.gsub!(/ /,"")
  end
end

我認為您可能正在檢查函數的輸出,對嗎?

你有類似的東西

remove('1q')
=> nil

這是因為如果找不到空間,則remove方法不會返回任何內容。 只要確保您返回修改后的值即可。

def remove(x)
  if x.include? " "
    x.gsub!(/ /,"")
  end
  x  # this is the last executed command and so will be the return value of the method
end

現在你會看到

 remove('1q')
=> "1q"

請注意,您的方法實際上是對對象進行了突變,因此您實際上不需要測試返回的內容,只需檢查具有原始值的變量即可。 做...

test_value = 'My carrot'
remove(test_value)

p test_value
=> "Mycarrot"

最后,正如已經指出的那樣,您不需要將其gsub!if子句gsub! 將僅在找到的任何空間上工作,否則將不執行任何操作。

def remove(x)
  x.gsub!(' ', '')
  x
end

注意,您仍然需要像gsub!一樣返回x變量gsub! 什么都不做,返回nil

gsub方法(另一方面)不會發生變化,它將始終返回一個新值,該值將是進行了任何替換的字符串,因此您可以執行

def remove(x)
  x.gsub(' ','')
end

而且,無論是否發生替換,這將始終返回一個值...但是原始對象將保持不變。 (返回的值將具有不同的object_id

更簡單,您可以執行以下操作:

def remove_blank_spaces(str)
  str.delete(' ')
end

其他選擇:

def remove_blank_spaces(str)
  str.gsub(' ', '')
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM