【问题标题】:Deleting a letter in an array of strings删除字符串数组中的一个字母
【发布时间】:2018-06-21 10:22:40
【问题描述】:

我有一个字符串数组

array = ["Hello", "This", "is", "Great"]

如何删除上述数组中特定字符串的特定字母?

即。假设我想删除字符串“is”中的字母 s

我知道array[2][1]是用来选择字母“s”的;使用我认为也许.delete_at(2)(1) 可以以类似的方式使用,但不是。

我们将不胜感激。

【问题讨论】:

  • 提示:它不是一个多维数组(正如您的标签之一所建议的那样)。它是一个字符串数组。 arrays[2] 为您提供所需的字符串。扫一扫available string methods,看看你是否可以让字符串以你需要的方式改变自己。 (那里有几种方法,可以帮助您实现这一目标)
  • 以后,我建议您至少等待几个小时再选择答案。不用着急。
  • 别担心,我不需要你的建议,但还是谢谢你。

标签: arrays ruby string


【解决方案1】:

你可以使用切片:

mystring = "bla"
mystring.slice!(1)

mystring 现在将返回 'ba'。在您的示例中使用它:

array[2].slice!(1)

数组现在返回

["Hello", "This", "i", "Great"]

【讨论】:

  • 切片过于具体和笼统,例如案例。
  • @kiddorails 你是什么意思?
  • @Stefan 我的错。只需重新详细阅读问题。我认为 headchefdaniel 正在寻找删除某个数组位置中的一个字符(比如“s”)。
【解决方案2】:

我知道array[2][1]是用来选择字母"s"

确实,但[2][1] 是两个 不同的方法调用:array[2] 调用Array#[],它返回给定索引处的元素:

array[2] #=> "is"

在该返回值上调用[1],即"is":

array[2][1] #=> "s"
    "is"[1] #=> "s"

或者用一个临时变量来说明:

string = array[2] #=> "is"
string[1]         #=> s

由于返回值是一个字符串,[1] 调用String#[]。

我想也许.delete_at(2)(1) 可以以类似的方式使用,但不是。

Array 对它的元素一无所知(也不应该)。因此,您不能要求数组删除它包含的字符串的一部分。您必须要求字符串这样做。

String#slice! 可用于删除给定索引处的字符:

string = "is"

string           #=> "is"
string.slice!(1) #=> "s"
string           #=> "i"

应用于您的阵列:

array = ["Hello", "This", "is", "Great"]

array[2]           #=> "is"
array[2].slice!(1) #=> "s"
array[2]           #=> "i"

array #=> ["Hello", "This", "i", "Great"]

【讨论】:

    【解决方案3】:

    也可以使用String的delete!方法

    在您的情况下,当应用于数组时,它将返回:

    array = ["Hello", "This", "is", "Great"]
    
    array[2] #=> "is"
    
    array[2].delete! "s" #=> "i"
    
    array #=> ["Hello", "This", "i", "Great"]
    

    请注意,delete! 执行删除操作,如果 str 未被修改,则返回 str 或 nil。

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多