Rumah > Soal Jawab > teks badan
例如:要将第一分组大写:
str = '1abc2aabbcc3aaabbbccc4'
pp str.sub(/(a{2})(b{2})/, '\1.upcase\2') # =>"1abc2aa.upcasebbcc3aaabbbccc4" 第一分组怎么没有变大写呢?
pp str.sub(/(a{2})(b{2})/, '\1'.upcase + '\2') # =>"1abc2aabbcc3aaabbbccc4" 奇怪,upcase()还是没起作用!?
pp str.sub(/(a{2})(b{2})/, $1.upcase + '\2') # =>"1abc2AAbbcc3aaabbbccc4" 使用$1而不是'\1',upcase()才起作用?
我想大声告诉你2017-04-24 16:01:42
Dua isu terlibat di sini:
1, '1'
dan , perbezaan antara dua rujukan belakang
2, perbezaan halus antara petikan tunggal '
dan petikan berganda "
dalam Ruby
Anda mungkin perasan bahawa saya menulis '1'
bukannya 1
, kerana Ruby, sebagai bahasa umum, tidak mempunyai objek seperti 1
dengan kata lain, anda tidak boleh menulis 1
sahaja.
Soalan 1:
'1'
digunakan dalam padanan, digunakan padanan luar
pada asasnya ialah pembolehubah global selagi padanan biasa berlaku,
Ruby
akan mengemas kini pembolehubah global ini kepada Perl
Reka bentuk biasa '1'
pada asasnya adalah rentetan, tetapi digunakan sebagai rujukan belakang untuk kumpulan apabila dipadankan
sememangnya rujukan belakang biasa, seperti digunakan dalam 1
, sed
.echo str | sed -E 's,(a{2})(b{2}),21,g'
str =~ /(a{2})(b{2})/
#=> 'aa'
str =~ /(a)(b)/
#=> 'a'
str.sub(/(a{2})(b{2})/, '') #=> 1abc2bbaacc3aaabbbccc4
Penjelasan: mewakili kumpulan pertama perlawanan, iaitu, '1'
, yang bermaksud mengulangi dua a
.a
.'1'
Dalam kebanyakan kes,
dan '
digunakan sama, tetapi terdapat perbezaan dalam pemprosesan "
Tanda petikan berganda mewakili
"1"
, iaitu digunakan untuk menaip "u0001"
. Watak ialah satu watak. unicode
dalam tanda petikan tunggal ialah '1'
dan , yang merupakan dua aksara . Huruf besar, tetapi dalam
1
, kaedah '1'.upcase
untuk aksara bukan huruf kecil kembali sendiri.Ruby
#upcase
Memandangkan apa yang anda maksudkan di sini, anda harus menggantikan
, kemudian laksanakan kaedah '1'
, dan kemudian menggantikan rentetan asal Setahu saya, ini tidak boleh dilakukan melainkan ruby adalah dalam bahasa Sediakan sintaks baharu pada tahap, jika tidak, aa
hanyalah rentetan, dan rujukannya kepada kumpulan yang sepadan bukanlah proses yang disimpan dalam pembolehubah Rasanya proses yang dilaksanakan di bahagian bawah akan berubah secara automatik #upcase
dalam '1'
>Digantikan dengan rentetan petikan.'..'
1
Jawapan:
dan '1.upcase2'
dalam petikan tunggal digantikan dengan '1'
dan '1'
masing-masing, aa
kekal tidak berubah
bb
.upcase
dengan '1'.upcase
'1'
'2'
.upcase
天蓬老师2017-04-24 16:01:42
Apabila parameter dihantar ke kaedah, parameter dikira terlebih dahulu dan kemudian hasilnya dihantar ke kaedah