2016-05-28 194 views
-2

下面是一個字符串的下一個字符,查找字符串

test = "IXIVDL" 

如何找到其中的字符「I」中的字符串之後來到? 而不管它只是「X」還是「V」或其他?

例如,

"IDXCN"是無效的字符串,因爲"I" ID後跟"D"

"IXD"是一個有效的字符串,因爲"I"其次是"X"

"IVIX"是一個有效的字符串,因爲"I"之後"V""X"

"DIDIX"是無效的字符串,因爲"I"後面跟着"D"

"DXI"有效

我不希望任何字符串輸出。結果應該是真或假或零。

+0

您似乎一直在急於選擇一個答案。 –

回答

0

檢查有正則表達式在這裏工作:Class: Regexp

這應該解決您的疑問,請注意,當它存在有效字符串的索引返回:

'IXIVDL' =~ /I[XV]/ # returns 0 
'IDXCN' =~ /I[XV]/ # returns nil 
'IXD' =~ /I[XV]/ # returns 0 
'IVIX' =~ /I[XV]/ # returns 2 

如果您需要了解是否I緊接着是XV您可以改爲使用:

'DID­IX' =~ /I[^X­V]/ 

它返回nil有效的字符串(注意它在字符串的末尾接受I)。

+0

這是不正確的,因爲'DIDIX'=〜/ I [XV] /#返回3,這是無效的。 「I」後面只能跟「X」或「V」 –

+0

所以即使'I'後面緊跟着'X',你就需要它失敗,因爲在字符串的其他部分'I'是立即的接着是'D'?如果是這種情況,請檢查我的更新答案。 – MondKin

+0

字符串末尾的「I」沒問題。感謝您的回覆。 –

1
def validate(str)  
    res = str.scan(/(?<=I).?/) 
    puts "String is #{(res-['X','V']).empty? ? "valid" : "invalid"}" 
    res.each do |c| 
    if c.empty? 
     puts "I at end of string is invalid" 
    else 
     puts "#{c} following I is #{c=~/[XV]/ ? "valid" : "invalid"}" 
    end 
    end 
end 

validate "IXIVDLIZRI" 
String is invalid 
X following I is valid 
V following I is valid 
Z following I is invalid 
I at end of string is invalid 

validate "IXIVDLIV" 
String is valid 
X following I is valid 
V following I is valid 
V following I is valid 

/(?<=I)./匹配「I」後面的任何字符。 (?<=I)是一個積極的lookbehind。更改puts消息以適合。

1

這是一種可以運行以測試您的字符串的方法,如果沒有II後面跟着您指定的正確字母,它將輸出Invalid String。否則,它會輸出Valid String, I is followed by...,無論您選擇哪個字母。在這種情況下XV

def find_I(test) 
    index_of_I = test.split('').find_index { |letter| letter == 'I' } 
    if index_of_I.nil? || test[index_of_I + 1].nil? 
    return "Invalid String" 
    elsif test[index_of_I + 1] =~ /[XV]/ 
    return "Valid String, I followed by #{test[index_of_I + 1]}" 
    else 
    return "Invalid String" 
    end 
end 
0

這是最簡單的解決方案。

def find_string_digits(str) 
    str =~ /IX/ || str =~ /IV/ ? true : false 
end 

它使用正則表達式來匹配字符串內的特定圖案,在這種情況下是否一個「X」直接跟隨一個「i」,或者如果一個「V」直接跟隨一個「I」,並且如果是這樣返回true,否則返回false。在附註中,如果你想檢查'I'是'X'後的第三個字母,你可以匹配/I..X/等等。

希望有所幫助。