2017-04-07 195 views
1
my $book = Spreadsheet::Read->new(); 
my $book = ReadData 
('D:\Profiles\jmahroof\Desktop\Scheduled_Build_Overview.xls'); 
my $cell = "CD7"; 
my $n = "1"; 
my $send = $book->[$n]{$cell}; 

上面的代碼從電子表格獲取數據,然後打印,我知道有文本的單元格的內容,具有完全以下格式的文本:文本(文本)如何刪除或替換字符串中的括號?

我需要更換開放的支架與一個空的空間,我需要刪除緊密支架。我已經嘗試了下面的代碼來替代開放的括號中的空白空間,但它似乎沒有工作。

$send =~ s/(/ /g; 
print $send; 
+2

嘗試轉義元字符'(':'$ send =〜s/\(//g' –

+1

解決,謝謝 –

回答

1

括號被視爲代碼的一部分,只是逃避它。

$send =~ s/\(/ /; 
print $send; 
1

既然你只能更換一個字符用另一個,你不希望替換,但音譯。這是tr/// function in Perl。由於該模式只是一個字符列表,而不是一個實際的正則表達式,所以您不需要轉義左括號(。也沒有/g標誌。它只是取代所有的事件。

$send =~ tr/(/ /; 

的主要區別正則表達式替換的是,音譯獲得在編譯時編譯,而不是在運行時。這使得tr///s///更快,特別是在循環中。

查看full documentation in perlop

+0

好點,真的.. –

+0

這真的很有趣,他們得到編譯時編譯,我肯定會考慮使用這個;) –

+0

@JamalMahroof使它更難於在動態模式下使用它,這是一個痛苦,但這個用例正是它的用途。 – simbabque

相關問題