Basit ama kafa karıştırıcı Yakut dize işleme

4 Cevap php

PHP, Ruby küçük bir bit dönüştürmek çalışıyorum, ve ben bu bir satır hariç, bugüne kadar başarılı oldu:

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

PHP bu iki şey denedim:

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

Ama sorun string[#,#] sözdizimi ne hiçbir ipucu olması. I string[#..#] öncesi ve string[#] gördük, ama asla string[#,#].

4 Cevap

string[x,y] endeksi x başlar ve (1.8 ya da bayt) y karakter bir alt dizgesi (string[x..y] hangi endeks x başlar ve endeks y durur aksine) uzun.

$string = substr($string, 16, strlen($string) - 16); ... farklı çıktı çalışması gerektiğini bana görünüyor?

Oh and more about string in ruby: http://ruby-doc.org/core/classes/String.html#M000771

Eğer Ruby dokümanlar bakarsanız garip şeyler her türlü öğreneceksiniz. Ama bu sözdizimi sadece alt dize ve ofset, böylece sadece bir irb başlatmak ve biraz kaytaranlardan eğer olsun

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

böylece neler görebilirsiniz. Neyse, docs 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

Yanıtları ve yorumlardan bakılırsa, ben duygu hata başka bir yerde yatıyor var. Belki $ string boş. Bütün "bariz" şeyleri yazdırarak varsayımlarını test. Vs dize, strlen () sonucu, Ayrıca, bir ödemeler dengesi hattında hataları (örneğin, bir sonlandırılmamıs olarak () ise) beklenmeyen sonuçlar verebilir.