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
'programing' 카테고리의 다른 글
PowerShell 복사 스크립트에서 여러 문자열을 적절하게 필터링하는 방법 (0) | 2023.04.13 |
---|---|
NSInterger의 NSLog/printf 지정자? (0) | 2023.04.13 |
SQL Server 데이터베이스로 Excel 스프레드시트 열 가져오기 (0) | 2023.04.13 |
SQL Server ORDER BY 날짜 및 Null 마지막 (0) | 2023.04.13 |
라이브(저장되지 않은) Excel 데이터와 C# 객체 간의 인터페이스를 위한 가장 빠른 방법 (0) | 2023.04.13 |