Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;to Ruby:在字符串中查找子字符串_C++_Ruby - Fatal编程技术网

C++ C++;to Ruby:在字符串中查找子字符串

C++ C++;to Ruby:在字符串中查找子字符串,c++,ruby,C++,Ruby,我学习了Rails,现在想扩展我对Ruby的知识。所以我在红宝石中做一些C++练习。具体来说,我需要找出字符串中是否存在子字符串。如果需要,我需要它返回它的起始索引。如果它不存在,则返回-1。我想出了一个非常类似C++的Ruby解决方案,想知道在Ruby中是否有一个更好的,更习惯的解决方案? C++ 您可以使用String的方法。当匹配失败时,它返回nil,这比返回-1更习惯于Ruby "SubString".index("String") # -> 3 "SubString".ind

我学习了Rails,现在想扩展我对Ruby的知识。所以我在红宝石中做一些C++练习。具体来说,我需要找出字符串中是否存在子字符串。如果需要,我需要它返回它的起始索引。如果它不存在,则返回-1。我想出了一个非常类似C++的Ruby解决方案,想知道在Ruby中是否有一个更好的,更习惯的解决方案? C++

您可以使用
String
的方法。当匹配失败时,它返回
nil
,这比返回-1更习惯于Ruby

 "SubString".index("String") # -> 3
 "SubString".index("C++") # -> nil
如果您真的想要这种行为,您可以将其包装在一个返回-1表示零的测试中。

您可以使用
String
的方法。当匹配失败时,它返回
nil
,这比返回-1更习惯于Ruby

 "SubString".index("String") # -> 3
 "SubString".index("C++") # -> nil
如果您真的想要这种行为,您可以将其封装在一个返回-1表示零的测试中

  • 在Ruby中不要对使用
    ,它只调用每个
    ,不引入作用域。因此,0…str.length中的i的
    变为
    (0…str.length)。每个都执行| i |

  • 高阶函数是你的朋友!使用&使事情更干净(学习,它是许多有用方法的家):

  • 只需使用Ruby core的
    :)

  • 当没有匹配项时,#2和#3都返回
    nil
    ,而不是
    -1
    。这是最好的,因为在Ruby中
    nil
    是错误的

    #how if we use this solution, it gets the job done in O(n)    
    
    given_string = "Replace me with your code!"
    
    chars_given_string = given.split('')
    
    chars_of_substr = "ith".split('')
    
    is_substr = false
    ptr = 0
    
    char_given.each do |i|
        if ( i == substr[ptr])
           ptr += 1
        else
           ptr = 0
        end
        is_substr = true if ptr == substr.length
        break if ptr == substr.length
    end
    
    puts is_substr
    
  • 在Ruby中不要对使用
    ,它只调用每个
    ,不引入作用域。因此,0…str.length中的i的
    变为
    (0…str.length)。每个都执行| i |

  • 高阶函数是你的朋友!使用&使事情更干净(学习,它是许多有用方法的家):

  • 只需使用Ruby core的
    :)


  • 当没有匹配项时,#2和#3都返回
    nil
    ,而不是
    -1
    。这是最好的,因为<代码> nIL/COD>是Ruby中的Falsie./P>,真的,真的想要它。我检测到C++的攻击,即使我们有<代码> AutoCindex=S1. find(S2);<代码>和在c++14
    中的“子字符串”s.find(“字符串”)——在你问之前,真的,真的想要它。我检测到C++的攻击,即使我们有<代码> AutoCindex=S1. find(S2);<代码>和在c++14
    中的“子字符串”s.find(“字符串”)
    -在您询问之前,.Ruby实现了许多通用的
    字符串
    数组
    例程,这些例程直接作为内置类上的方法。要学习习惯性的Ruby,你会想延伸到一些更高层次的商业逻辑中——比如使用这个字符串匹配来提供HTML中的术语的例程。最好的办法是假装你不知道任何C++,它会让你误入歧途。你学会了Rails而不知道露比?你不知道Rails,你只知道如何配置它的一部分,没有Ruby就没有Rails。不了解Ruby的Rails是一条非常陡峭的学习曲线,仅限于配置东西,而不是编写控制器、编写视图或定义模型的操作。即使Rails中的DSL也需要少量Ruby,否则语法将毫无意义,使用块也没有意义。一旦有人开始理解Ruby,他们实际上可以变得富有创造力和生产力。没有红宝石,别人只是鹦鹉学舌,我极力建议不要尝试学习基于C++练习的Ruby,一种相当高级的语言,它教一种相当低级的语言。C和C++比汇编语言更接近汇编程序;从Perl学习Ruby将是一个更接近的匹配。我已经把它们全部写了下来,而且每种语言的功能的发展以及我们在其中的想法,都导致了C++ Ruby的巨大鸿沟。如果你想尝试一下,我建议你考虑的不仅仅是通过索引来搜索字符串中的字符——这是汇编程序的想法,而且要专注于更高级的函数。这就是Andrew回答的要点。Ruby实现了许多通用的
    字符串
    数组
    例程,这些例程直接作为内置类上的方法。要学习习惯性的Ruby,你会想延伸到一些更高层次的商业逻辑中——比如使用这个字符串匹配来提供HTML中的术语的例程。最好的办法是假装你不知道任何C++,它会让你误入歧途。你学会了Rails而不知道露比?你不知道Rails,你只知道如何配置它的一部分,没有Ruby就没有Rails。不了解Ruby的Rails是一条非常陡峭的学习曲线,仅限于配置东西,而不是编写控制器、编写视图或定义模型的操作。即使Rails中的DSL也需要少量Ruby,否则语法将毫无意义,使用块也没有意义。一旦有人开始理解Ruby,他们实际上可以变得富有创造力和生产力。没有红宝石,别人只是鹦鹉学舌,我极力建议不要尝试学习基于C++练习的Ruby,一种相当高级的语言,它教一种相当低级的语言。C和C++比汇编语言更接近汇编程序;从Perl学习Ruby将是一个更接近的匹配。我已经把它们全部写了下来,而且每种语言的功能的发展以及我们在其中的想法,都导致了C++ Ruby的巨大鸿沟。如果你想尝试一下,我建议你考虑的不仅仅是通过索引来搜索字符串中的字符——这是汇编程序的想法,而且要专注于更高级的函数。这就是安德鲁回答的要点。另外,使用
    每个
    都有助于避免索引也会遇到的“帮助!我已经用完了数组末尾”问题。另外,使用
    每个
    都有助于避免索引也会遇到的“帮助!我已经用完了数组末尾”问题。
    
    #how if we use this solution, it gets the job done in O(n)    
    
    given_string = "Replace me with your code!"
    
    chars_given_string = given.split('')
    
    chars_of_substr = "ith".split('')
    
    is_substr = false
    ptr = 0
    
    char_given.each do |i|
        if ( i == substr[ptr])
           ptr += 1
        else
           ptr = 0
        end
        is_substr = true if ptr == substr.length
        break if ptr == substr.length
    end
    
    puts is_substr
    
    'foobar'.index('ob')  #=> 2
    
    #how if we use this solution, it gets the job done in O(n)    
    
    given_string = "Replace me with your code!"
    
    chars_given_string = given.split('')
    
    chars_of_substr = "ith".split('')
    
    is_substr = false
    ptr = 0
    
    char_given.each do |i|
        if ( i == substr[ptr])
           ptr += 1
        else
           ptr = 0
        end
        is_substr = true if ptr == substr.length
        break if ptr == substr.length
    end
    
    puts is_substr