# String#sub!{...}

**URL:** <https://www.ruby-forum.com/t/string-sub/83768>\
**Category:** Development\
**Created:** [January 29, 2007, 5:00pm UTC](https://www.ruby-forum.com/t/string-sub/83768 "2007-01-29T17:00:54Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 29, 2007, 5:00pm UTC](https://www.ruby-forum.com/t/string-sub/83768/1 "2007-01-29T17:00:54Z")

</div>

e$B@\>;3OB9-$G$9!#e(B

[http://zunda.freeshell.org/d/20070126.html#p04](http://zunda.freeshell.org/d/20070126.html#p04)  
e$B$H$=$N%j%s%/@h$Ne(B  
[http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/palm-ja-proxy/blazer-ja-proxy/bin/blazer-ja-proxy?rev=1.42.2.10&only\_with\_tag=RUBY\_DEBUG\_070126&view=auto](http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/palm-ja-proxy/blazer-ja-proxy/bin/blazer-ja-proxy?rev=1.42.2.10&only_with_tag=RUBY_DEBUG_070126&view=auto)  
e$B$r$_$F:G\>.$O$I$N$/$i$$$K$J$j$=$&$+;n$7$F$_$^$7$?!#e(B

% irb-1.8.5  
ruby 1.8.5 (2006-08-25) [i686-linux]

> > (s=‘a’).sub!(//){//=~s;‘b’};s.scan(/./m)  
> > =\> [“b”, “”]  
> > (s=‘a’).sub!(//){//=~s;‘ABC’};s.scan(/./m)  
> > =\> [“A”, “”]  
> > (s=‘foo’).sub!(//){//=~s;‘bar’};s.scan(/./m)  
> > =\> [“b”, “a”, “r”, “”]  
> > (s=‘foo’).sub!(//){//=~s;‘hoge’};s.scan(/./m)  
> > =\> [“h”, “o”, “g”, “”]  
> > (s=‘foo’).sub!(//){//=~s;‘hogefuga’};s.scan(/./m)  
> > =\> [“h”, “o”, “g”, “”]  
> > (s=‘foobar’).sub!(//){//=~s;‘hogefuga’};s.scan(/./m)  
> > =\> [“\000”, “\000”, “\000”, “\000”, “a”, “r”, “”]

e$B$J$I$H?'!9;n$7$F$$$F!"e(Bsub!e$B$NCf$G$N%^%C%Ae(B(//=~s)e$B8e$Ke(B  
e$BJ8;zNs$,D9$/$J$C$F$$$k$H$\*$+$7$/$J$C$F$$$k$h$&$Ke(B  
e$B8+$($^$9!#e(B

e$B$H$$$&$o$1$G!":G\>.$O$3$N$/$i$$$K$J$j$=$&$G$9!#e(B

> > (s=‘’).sub!(//){//=~s;‘a’};s.scan(/./m)  
> > =\> [“”]

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 29, 2007, 5:36pm UTC](https://www.ruby-forum.com/t/string-sub/83768/2 "2007-01-29T17:36:14Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:30211] String#sub!{…}”  
on Jan.30,2007 00:59:52, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
| e$B$J$I$H?‘!9;n$7$F$$$F!“e(Bsub!e$B$NCf$G$N%^%C%Ae(B(//=~s)e$B8e$Ke(B  
| e$BJ8;zNs$,D9$/$J$C$F$$$k$H$\*$+$7$/$J$C$F$$$k$h$&$Ke(B  
| e$B8+$($^$9!#e(B  
|  
| e$B$H$$$&$o$1$G!”:G\>.$O$3$N$/$i$$$K$J$j$=$&$G$9!#e(B  
|  
| \>\> (s=’').sub!(//){//=~s;‘a’};s.scan(/./m)  
| =\> [“”]

s.scan(/./) e$B$G$$$1$^$9$M!#e(B

e$B$H$$$&$N$O$I$&$G$b$h$/$F!"$3$s$J46$8$G$7$g$&$+e(B?

# Index: string.c

— string.c (revision 11577)  
+++ string.c (working copy)  
@@ -1966,7 +1966,6 @@

```
 pat = get_pat(argv[0], 1);
 if (rb_reg_search(pat, str, 0, 0) >= 0) {

```

- rb\_str\_modify(str);  
match = rb\_backref\_get();  
regs = RMATCH(match)-\>regs;

@@ -1982,6 +1981,7 @@  
else {  
repl = rb\_reg\_regsub(repl, str, regs);  
}

- rb\_str\_modify(str);  
if (OBJ\_TAINTED(repl)) tainted = 1;  
plen = END(0) - BEG(0);  
if (RSTRING(repl)-\>len \> plen) {

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 30, 2007, 12:10am UTC](https://www.ruby-forum.com/t/string-sub/83768/3 "2007-01-30T00:10:09Z")

</div>

zundae$B$G$9e(B

String#sub!{}e$B$NIT6q9g!"$b$&$A$g$C$H@0M}$7$F$+$i$3$A$i$Ke(B  
e$B$4Js9p$r!D$H;W$C$F$$$?$iD\>$7$F$$$?$@$$$A$c$$$^$7$?!#e(B

e$B\<j85$G$O!"$J$+$`$ie(B(e$B$&e(B)e$B$5$s$N%Q%C%A$rEv$F$?e(BRubye$B$G!"e(B  
e$BA4A3:G\>.$K$J$C$F$$$J$$e(B  
[http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/palm-ja-proxy/blazer-ja-proxy/bin/blazer-ja-proxy?rev=1.42.2.10&only\_with\_tag=RUBY\_DEBUG\_070126&view=auto](http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/palm-ja-proxy/blazer-ja-proxy/bin/blazer-ja-proxy?rev=1.42.2.10&only_with_tag=RUBY_DEBUG_070126&view=auto)  
e$B$G$b4|BTDL$j$N7k2L$K$J$k$3$H$,3NG’$G$-$^$7$?!#e(B

e$B@\>;3$5$s!“$J$+$`$ie(B(e$B$&e(B)e$B$5$s!”$"$j$,$H$&$4$6$$$^$7$?!#e(B

— “U.Nakamura” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

> e$B!"$3$s$J46$8$G$7$g$&$+e(B?

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 30, 2007, 8:49am UTC](https://www.ruby-forum.com/t/string-sub/83768/4 "2007-01-30T08:49:10Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:30217] Re: String#sub!{…}”  
on Jan.30,2007 14:39:45, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
| |— string.c (revision 11577)  
| |+++ string.c (working copy)  
|  
| e$B%3%\_%C%H$7$F$/$@$5$$$^$;$s$+!)e(B

1.9e$B$K$OLdBj$O$J$$!“$H;W$C$F$$$?$N$G$9$,!”$J$+$@$5$s$K$h$k$He(B1.9  
e$B$G$b$A$g$C$H\>r7o$rJQ$($k$H:F8=$9$k$h$&$G$9!#e(B  
e$BD\>$7J}$Oe(B1.8e$B$H0l=o!#e(B

e$B$H$$$&$o$1$G!“e(Btrunke$B$He(Bmatzrubye$B$K$bF~$l$?J}$,$$$$$G$7$g$&$+e(B?  
e$B$”$H!"e(B1.8.5e$B$O$I$&$7$^$7$g$&$+e(B?e$B!dKNIt$5$se(B

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 30, 2007, 6:39am UTC](https://www.ruby-forum.com/t/string-sub/83768/5 "2007-01-30T06:39:58Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30212] Re: String#sub!{…}”  
on Tue, 30 Jan 2007 01:35:52 +0900, “U.Nakamura”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B$H$$$&$N$O$I$&$G$b$h$/$F!"$3$s$J46$8$G$7$g$&$+e(B?

|— string.c (revision 11577)  
|+++ string.c (working copy)

e$B%3%\_%C%H$7$F$/$@$5$$$^$;$s$+!)e(B

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 30, 2007, 11:31am UTC](https://www.ruby-forum.com/t/string-sub/83768/6 "2007-01-30T11:31:44Z")

</div>

e$BKNIt$G$9!#e(B

U.Nakamura wrote:

> e$B$H$$$&$o$1$G!“e(Btrunke$B$He(Bmatzrubye$B$K$bF~$l$?J}$,$$$$$G$7$g$&$+e(B?  
> e$B$”$H!"e(B1.8.5e$B$O$I$&$7$^$7$g$&$+e(B?e$B!dKNIt$5$se(B

e$B$($C$H!"e(B[ruby-dev:30214]e$B$NBP:v$HF1;~$K$d$k$N$O$J$s$+:.Mp$9$k$H;W$o$l$k$Ne(B  
e$B$G!"8~$3$&$,=\*$o$C$F$+$i$K$7$^$;$s$+e(B?

e$B4pK\E\*$K$Oe(B1.8.5e$B$K$bF~$l$kJ}8~$G9M$($F$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 30, 2007, 8:59am UTC](https://www.ruby-forum.com/t/string-sub/83768/7 "2007-01-30T08:59:13Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30218] Re: String#sub!{…}”  
on Tue, 30 Jan 2007 16:48:31 +0900, “U.Nakamura”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B$H$$$&$o$1$G!"e(Btrunke$B$He(Bmatzrubye$B$K$bF~$l$?J}$,$$$$$G$7$g$&$+e(B?

trunke$B$K$O$\*4j$$$7$^$9!#e(Bmatzrubye$B$O%U%'!\<%I%"%&%H$9$k=IL?$G$9e(B  
e$B$+$i%3%\_%C%HITMW$G$9!#e(B

---

<div class="post-metadata">

**Author:** ![Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/77aa72/32.png) [@Kazuhiro\_NISHIYAMA](https://www.ruby-forum.com/u/Kazuhiro_NISHIYAMA)\
**Post date:** [January 30, 2007, 11:43am UTC](https://www.ruby-forum.com/t/string-sub/83768/8 "2007-01-30T11:43:46Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:30223] Re: String#sub!{…}”  
on Jan.30,2007 19:31:12, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
| \> e$B$"$H!"e(B1.8.5e$B$O$I$&$7$^$7$g$&$+e(B?e$B!dKNIt$5$se(B  
| \>  
| e$B$($C$H!"e(B[ruby-dev:30214]e$B$NBP:v$HF1;~$K$d$k$N$O$J$s$+:.Mp$9$k$H;W$o$l$k$Ne(B  
| e$B$G!"8~$3$&$,=_$o$C$F$+$i$K$7$^$;$s$+e(B?  
|  
| e$B4pK\E_$K$Oe(B1.8.5e$B$K$bF~$l$kJ}8~$G9M$($F$^$9!#e(B

e$BN;2r$G$9!#e(B  
e$BMn$ACe$$$?$H$3$m$G$d$j$^$7$g$&!#e(B

e$B$=$l$G$O!#e(B
