2010-02-06 33 views
0

我想紅寶石的小位轉換爲PHP,我已經成功至今,除了這一行:簡單但令人困惑的Ruby字符串操作

string = string[16,string.length-16] 

我已經試過這兩個東西PHP:

$string = substr($string, 16, strlen($string) - 16); 
// and 
$string = substr($string, 16, strlen($string) - 32); 

但問題是,我不知道什麼string[#,#]語法呢。我之前看過string[#..#]string[#],但從未看過string[#,#]

回答

3

string[x,y]string[x,y]是一個從索引x開始並且是y個字符(或1.8個字節)長的子字符串(與從索引x開始並在索引y停止的string[x..y]相反)。

+0

那麼爲什麼我的第一個PHP示例沒有工作? – 2010-02-06 18:42:19

+0

@Ramblingwood,我發現PHP沒什麼問題。你的意思是'這不行'?語法錯誤,它沒有返回你想要的東西?你在檢查相同的字符串嗎? – 2010-02-06 18:45:00

+0

你會得到什麼結果?這個對我有用。 – 2010-02-06 18:46:19

2

如果你看看Ruby文檔,你會學到各種奇怪的東西。但是,這句法僅僅是串和偏移,所以如果你剛開始的IRB和遊手好閒一點你

>> "123456789"[3,2] 
=> "45" 

所以你可以看到發生了什麼。無論如何,文檔are here

str.index(substring [, offset]) => fixnum or nil 
str.index(fixnum [, offset]) => fixnum or nil 
str.index(regexp [, offset]) => fixnum or nil 
Returns the index of the first occurrence of the given substring, character (fixnum), or pattern (regexp) in str. Returns nil if not found. If the second parameter is present, it specifies the position in the string to begin the search. 

    "hello".index('e')    #=> 1 
    "hello".index('lo')   #=> 3 
    "hello".index('a')    #=> nil 
    "hello".index(101)    #=> 1 
    "hello".index(/[aeiou]/, -3) #=> 4 
+0

正如我上面所說,他們不是我的第一個例子工作呢? – 2010-02-06 18:45:19

+2

@Ramblingwood「不起作用」是一件很難解釋的事情。我們知道這是介於「我不想做我想做的事」和「讓我的電腦爆炸」之間的某個地方,但我們必須更多地幫助您。 – 2010-02-06 18:48:24

3

在我看來,$string = substr($string, 16, strlen($string) - 16);必須努力......不同的輸出?

哦,更多的是字符串中的紅寶石: http://ruby-doc.org/core/classes/String.html#M000771

+0

感謝您的字符串鏈接,我一直在尋找類似的東西。 – 2010-02-06 18:56:33

1

從答覆和您的意見來看,我感覺你的錯誤在於其他方面。也許$ string是空的。通過打印出所有「明顯」的東西來測試你的假設。該字符串,strlen()的結果等。另外,前一行(如未終止的if())上的錯誤可能會給出意想不到的結果。