我想用新行代替所有發生的回車,換行,但是我不行。
嘗試:my $new_string = $old_string =~ s/\r\n/\n/g
給出一個空的$new_sting
。
這個:my $new_string = $old_string =~ s/\r\n$/\n/g
也不起作用給一個空字符串。
我在這裏搞什麼?爲什麼我不能全部替換字符串,而是取回空字符串?
3
A
回答
5
原始嘗試的問題是$old_string
與替換運算符(因此它是將被修改的變量)綁定,然後替換運算符的返回值成爲匹配成功的次數。該匹配計數置於$new_string
如果匹配失敗,則使用空字符串表示零計數。
您原來的嘗試將工作在最近的Perl版本支持/r
修改,只有輕微的修改罰款:
my $new_string = $old_string =~ s/\r\n/\n/gr;
這修飾符觸發的替換操作了「無損」模式,返回修改的字符串而不是計數。在Perl 5.14中引入了/r
修飾符,並在perlop中進行了描述。
在舊版本的Perl,括號可用於操縱的優先級:
(my $new_string = $old_string) =~ s/\r\n/\n/g
此語法評估my $new_string = $old_string
第一,然後使用$new_string
與替代結合。
2
你代上$old_string
和$new_string
只包含多少換人做,所以使用括號改變運算的優先級,
(my $new_string = $old_string) =~ s/\r\n/\n/g;
4
這
my $new_string = $old_string =~ s/\r\n/\n/g
返回的數替換,而不是新字符串。要查看新字符串,替換後只需print $old_string
。
從perlop:
s/PATTERN/REPLACEMENT/msixpodualgcer
搜索模式的字符串,如果找到,替換替換文本和回報換人的號碼進行該模式。 否則它返回false(特別是空字符串)。如果使用/ r(非破壞性)選項,那麼它將在字符串副本上運行替代,而不是返回替換次數,它將返回是否發生替換的副本。當使用/ r時,原始字符串永遠不會更改。即使輸入是對象或綁定變量,副本也將始終爲純字符串。
相關問題
- 1. Mysql替換不是全部字符串?
- 2. Elasticsearch聚合部分字符串,而不是全部字符串
- 3. 替換字符串的特殊字符爲空字符串
- 4. 爲什麼這個BufferedReader返回空字符串而不是null?
- 5. VBScript字符串替換範圍而不是字符串?
- 6. C#:拆分字符串,而不是返回空字符串
- 7. 爲什麼替換空字符串沒有任何返回
- 8. 替換字符串...什麼,我想
- 9. 將字符串替換爲字符串
- 10. 爲什麼我返回[Object,object]而不是字符串?
- 11. Regex.Replace不是更換整個字符串,而不是替換字符串
- 12. 全部替換字符串中的字符用「*」字符
- 13. JavaScript將部分字符串替換爲部分字符串?
- 14. 空字符串返回而不是IndexError
- 15. 零返回,而不是空字符串
- 16. 爲什麼我的「替換參數」變成空字符串?
- 17. 什麼是空字符串?
- 18. 全局替換字符串
- 19. 爲什麼我不能接收字符串,它是空
- 20. 爲什麼MongoDB.Bson.BsonExtensionMethods.ToBson返回字節數組而不是字符串?
- 21. 全部替換「和「從字符串
- 22. Java字符串操作替換全部
- 23. Javascript:全部替換字符串問題
- 24. java字符串全部替換
- 25. 爲什麼我不能將已經RFC3339字符串解析回RFC3339字符串?
- 26. 爲什麼[] + []返回空字符串?
- 27. 爲什麼subprocess.popen返回空字符串
- 28. 爲什麼regex.Match返回空字符串?
- 29. gsub返回數字矩陣而不是替換字符串
- 30. - [R空字符串替換
與我所做的有何不同? – Jim
@Jim的優先順序不同 –