2009-09-30 75 views
5

我需要刪除一行文字,其中包含大量不同的空格。我可以弄清楚一個循環的方法,並將空白添加到$ foo,然後將其拼接到文本中,但這不是一個優雅的解決方案。如何在Perl中插入大量空格?

+1

你應該問一些諸如 *「我要如何插入一定量的Perl /正則表達式的空格呢? 「* ... – 2009-09-30 11:25:47

+1

在您的標題中,」正則表達式「這個詞是什麼意思? – innaM 2009-09-30 11:47:49

+0

我在標題中包含了正則表達式(注意爲了清晰起見,它已經被編輯過),因爲我假設可能會有一種哈希的方式遞歸地用10個空格替換空格五次以獲得10000個空格的順序。 – Timo 2009-10-01 10:19:27

回答

29

我需要一些信息。你只是追加到一些文本,或者你需要插入它?

無論哪種方式,一個簡單的方法來重複是Perl的「x」的運營商,如。

" " x 20000 

會給你20K空間。

如果有一個現有的字符串($ S說),你要墊出到20K,嘗試

$s .= (" " x (20000 - length($s))) 

BTW,Perl有an extensive set of operators - 非常值得,如果你是認真的語言學習。

UPDATE:最初提出的問題(它已經被編輯)問20K左右的空間,而不是「很多空白的」,因此,在20K我的回答。

+0

謝謝,這個作品完美。我相信perl會有這樣一個優雅的解決方案,但是我的谷歌搜索技巧讓我失望(儘管我找到了你提到的那個網站)。 – Timo 2009-09-30 16:11:52

+0

我編輯它使其更普遍有用。在我看來,「20000」仍然符合「很多」的標準。對不起,如果有人得到你的情況。 – 2009-09-30 21:17:05

+0

沒有人接受我的案件,我認爲你的編輯是有道理的。我只是有點擔心後來出現的某個人可能會想知道爲什麼我在其他地方沒有提到它時,我的代碼中有20K。只是爲了跟上不僅僅解決某人問題的SO精神,而是爲未來的讀者創建一個有用的問答庫。 – dave 2009-09-30 21:48:40

4

使用「X」運營商:

print ' ' x 20000; 
10

如果你總是希望字符串是一定的長度,你可以使用sprintf

例如,要墊出$var白色空間,以便20,000個字符長的使用:​​

$var = sprintf("%-20000s",$var); 
+0

乾淨的方法。如果你想要之前的空間,刪除破折號。 – FlorianB 2017-04-26 21:55:45