programing

Ruby에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

topblog 2023. 4. 13. 20:29
반응형

Ruby에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

다음 내용을 포함하는 문자열 변수가 있습니다.

varMessage =   
            "hi/thsid/sdfhsjdf/dfjsd/sdjfsdn\n"


            "/my/name/is/balaji.so\n"
            "call::myFunction(int const&)\n"
            "void::secondFunction(char const&)\n"
             .
             .
             .
            "this/is/last/line/liobrary.so"

문자열에서 하위 문자열을 찾아야 합니다.

"hi/thsid/sdfhsjdf/dfjsd/sdjfsdn\n"

"/my/name/is/balaji.so\n"
"call::myFunction(int const&)\n"

어떻게 찾을 수 있죠?서브스트링이 존재하는지 여부를 판단해야 합니다.

다음 방법을 사용할 수 있습니다.

my_string = "abcdefg"
if my_string.include? "cde"
   puts "String includes 'cde'"
end

대소문자가 무관한 경우 대소문자를 구분하지 않는 정규 표현을 사용하는 것이 좋습니다.

/bcd/i =~ 'aBcDe'   # returns nil if no match

또는

/bcd/i === 'aBcDe'  # returns false if no match

이것은, 복수 행의 문자열에도 유효합니다.

자세한 내용은 Ruby의 Regexp 클래스를 참조하십시오.

이것도 할 수 있어요.

my_string = "Hello world"

if my_string["Hello"]
  puts 'It has "Hello"'
else
  puts 'No "Hello" found'
end

# => 'It has "Hello"'

이 예에서는 Ruby's String 메서드를 사용합니다.

클린트 파클의 답변에 대해 자세히 설명하겠습니다.

루비 반환의 정규식 일치nil표현이 안 맞을 때요.이 경우 일치하는 문자의 인덱스를 반환합니다.예를 들어 다음과 같습니다.

"foobar" =~ /bar/  # returns 3
"foobar" =~ /foo/  # returns 0
"foobar" =~ /zzz/  # returns nil

주의할 점은 루비에서만nil부울식false거짓으로 평가하다빈 배열, 빈 해시 또는 정수 0을 포함한 다른 모든 항목은 true로 평가됩니다.

그렇기 때문에/foo/위의 예와 그 이유를 참조하십시오.

if "string" =~ /regex/

예상대로 동작하며 의 '진정한' 부분에만 들어갑니다.if차단합니다.

Rails(3.1.0 이후)에서 사용할 수 있는 위의 답변보다 더 간결한 관용구는 다음과 같습니다..in?:

my_string = "abcdefg"
if "cde".in? my_string
  puts "'cde' is in the String."
  puts "i.e. String includes 'cde'"
end

저도 그게 더 읽기 쉽다고 생각해요.

상세한 것에 대하여는, 메뉴얼을 참조해 주세요.

Rails에서만 이용 가능하며 순수 Ruby에서는 이용하실 수 없습니다.

삼진법

my_string.include?('ahr') ? (puts 'String includes ahr') : (puts 'String does not include ahr')

또는

puts (my_string.include?('ahr') ? 'String includes ahr' : 'String not includes ahr')

String Element Reference 메서드는 다음과 같습니다.[]

내부[]는 리터럴 서브스트링, 인덱스 또는 regex 중 하나입니다.

> s='abcdefg'
=> "abcdefg"
> s['a']
=> "a"
> s['z']
=> nil

부터nil와 기능적으로 동일하다false및 에서 반환된 서브스트링[]true이 방법을 사용하는 것처럼 논리를 사용할 수 있습니다..include?:

0> if s[sub_s]
1>    puts "\"#{s}\" has \"#{sub_s}\""
1> else 
1*    puts "\"#{s}\" does not have \"#{sub_s}\""
1> end
"abcdefg" has "abc"

0> if s[sub_s]
1>    puts "\"#{s}\" has \"#{sub_s}\""
1> else 
1*    puts "\"#{s}\" does not have \"#{sub_s}\""
1> end
"abcdefg" does not have "xyz" 

인덱스를 하위 문자열과 혼동하지 않도록 하십시오.

> '123456790'[8]    # integer is eighth element, or '0'
=> "0"              # would test as 'true' in Ruby
> '123456790'['8']  
=> nil              # correct

정규식을 사용할 수도 있습니다.

> s[/A/i]
=> "a"
> s[/A/]
=> nil

Ruby에서 문자열에 서브스트링이 포함되어 있는지 확인하는 방법

'체크'라고 말하면 부울을 반환하고 싶을 것입니다.이 경우 를 사용할 수 있습니다.match?문자열 또는 정규식을 첫 번째 매개 변수로 받아들입니다. 이 매개 변수의 경우 정규식으로 자동 변환됩니다.사용 사례는 다음과 같습니다.

str = 'string'
str.match? 'strings' #=> false
str.match? 'string'  #=> true
str.match? 'strin'   #=> true
str.match? 'trin'    #=> true
str.match? 'tri'     #=> true

String#match?에는 스트링을 검색하는 인덱스를 지정하는 옵션의 second 인수의 이점이 추가되었습니다.디폴트로는 다음과 같이 설정되어 있습니다.0.

str.match? 'tri',0   #=> true
str.match? 'tri',1   #=> true
str.match? 'tri',2   #=> false
user_input = gets.chomp
user_input.downcase!

if user_input.include?('substring')
  # Do something
end

이것은 문자열에 하위 문자열이 포함되어 있는지 여부를 확인하는 데 도움이 됩니다.

puts "Enter a string"
user_input = gets.chomp  # Ex: Tommy
user_input.downcase!    #  tommy


if user_input.include?('s')
    puts "Found"
else
    puts "Not found"
end

중 할 수 으로도 같은 할 수 은 대소문자를 는 Lib가 대소문자를 무시하기 때문입니다).downcase

ADD_BUTTON_TEXTS = ["add to cart", "add to basket"].freeze
target_text = "AdD tO cArT"
ADD_BUTTON_TEXTS.each do |text|
  puts "Text was found" if target_text.downcase.include?(text)
end

언급URL : https://stackoverflow.com/questions/8258517/how-to-check-whether-a-string-contains-a-substring-in-ruby

반응형