2

これは、このフォーラムでの私の最初の投稿です。以下の文字列を分割する際に問題に直面しています。

先頭のスペース、間に複数のスペース、およびパイプ記号を含むファイル内の文字列:

$str= | U-mom  |   9.2 |   2.30E-04 | 9.60E-04 |    1.04E-04  OK |;

上記の文字列に複数のスペースを配置できませんでしたが、後に複数のスペースがあります"U-mom"

  1. 私はそれを使用して分割しようとしました:$str = join "", split ' ', $str;

    結果:|U-mom|9.2|2.30E-4|9.60E-4|1.04E-04OK|

  2. 次に使用しました:split(/\|/,$str); 各文字列を配列に格納し、結果は次のとおりです。


0      
U-mom0  
9.20  
2.30E-040  
9.60E-040  
1.04E-04OK0

結果は、開始配列として 0 を出力し、配列のすべての要素の接尾辞として 0 を出力します。この問題を克服するには助けが必要です。

4

3 に答える 3

0

スペースをキャッチしていないことを除いて、2回目の試行は機能するはずです。

perl -e 'print join("\n",split(/\s+\|\s+/," | U-mom | 9.2 | 2.30E-04 | 9.60E-04 | 1.04E-04"))'

U-mom
9.2
2.30E-04
9.60E-04
1.04E-04
于 2013-11-14T16:10:56.203 に答える
0

split 関数は正規表現を受け入れます。先頭と末尾にスペースがあることがわかっている場合は、それを正規表現に組み込んで分割します。

my $str = "| U-mom | 9.2 | 2.30E-04 | 9.60E-04 | 1.04E-04 OK |";
print "$_\n" for split(/\s*\|\s*/, $str);
# output: 
# U-mom
# 9.2
# 2.30E-04
# 9.60E-04
# 1.04E-04 OK

\s*ゼロ個以上の空白文字に一致

于 2013-11-14T15:55:29.940 に答える