2016-11-16 3 views
2

以下は文字列の名前と値( 'name' - 'value';)の形式です。 値'0 bytes'の出現を名前とともに削除する方法と の名前を削除して、その値と共に'/platform/sun4v/lib/sparcv9/libc_psr.so.1'という名前を削除します。Java Script:条件に基づいて複数の文字列を置換する方法

/devices - 0 bytes;/system/object - 0バイト。/etc/dfs/sharetab - 0 バイト。/dev/fd - 0バイト。/var/run - 13.77 GiB; /platform/sun4v/lib/sparcv9/libc_psr.so.1 - 27.24 GiB;/- 27.24GiB; /var - 26.84 GiB;/proc - 0バイト。/system/contract - 0バイト。/rpool - 18.04 GiB;/mnt - 157.67TiB;/vol - 0バイト。/was8 - 48.26 GiB; /platform/sun4v/lib/libc_psr.so.1 - 27.24 GiB;/etc/svc/volatile - 13.77 GiB;/etc/mnttab - 0バイト。/tmp - 13.82 GiB;その後、

答えて

3

スプリットselicolon上の文字列や、あなたの基準に基づいて配列をフィルタリングし、セミコロンを再度追加し、1つの文字列に戻って変換するには、アレイに参加:

var str = '/devices - 0 bytes; /system/object - 0 bytes; /etc/dfs/sharetab - 0 bytes; /dev/fd - 0 bytes; /var/run - 13.77 GiB; /platform/sun4v/lib/sparcv9/libc_psr.so.1 - 27.24 GiB;/- 27.24 GiB; /var - 26.84 GiB; /proc - 0 bytes; /system/contract - 0 bytes; /rpool - 18.04 GiB; /mnt - 157.67 TiB; /vol - 0 bytes; /was8 - 48.26 GiB; /platform/sun4v/lib/libc_psr.so.1 - 27.24 GiB; /etc/svc/volatile - 13.77 GiB; /etc/mnttab - 0 bytes; /tmp - 13.82 GiB;' 

var splitStr = str.split(';'); 
var newStr = splitStr.filter(function(item){ 
     var itemSplit = item.split('-'); 

     return !(itemSplit != '' && (itemSplit[0].trim() === '/platform/sun4v/lib/sparcv9/libc_psr.so.1' || itemSplit[1].trim() ==='0 bytes')); 
}).join(';'); 

//newStr is will contain the filtered string 
console.log(newStr); 
1

あなたがここに正規表現を使用することができます文字列を変換する。

参照:

  1. 最初の正規表現(/\/platform\/sun4v\/lib\/sparcv9\/libc_psr\.so\.1 [^\;]+\;\s/)が長い、ユニークサブストリングを選択します。
  2. 第二の正規表現(/\/[^\-]+- 0 bytes\;\s/g)すべて- 0 bytesのインスタンス(各インスタンスの前のラベル)

var paragraphAfter = document.getElementsByClassName('after')[0]; 
 
var textBefore = document.getElementsByClassName('before')[0].textContent; 
 
var textAfter = textBefore.replace(/\/platform\/sun4v\/lib\/sparcv9\/libc_psr\.so\.1 [^\;]+\;\s/,''); 
 
var textAfter = textAfter.replace(/\/[^\-]+- 0 bytes\;\s/g,''); 
 
paragraphAfter.textContent = textAfter;
<h2>Before:</h2> 
 
<p class="before">/devices - 0 bytes; /system/object - 0 bytes; /etc/dfs/sharetab - 0 bytes; /dev/fd - 0 bytes; /var/run - 13.77 GiB; /platform/sun4v/lib/sparcv9/libc_psr.so.1 - 27.24 GiB; /var - 26.84 GiB; /proc - 0 bytes; /system/contract - 0 bytes; /rpool - 18.04 GiB; /mnt - 157.67 TiB; /vol - 0 bytes; /was8 - 48.26 GiB; /platform/sun4v/lib/libc_psr.so.1 - 27.24 GiB; /etc/svc/volatile - 13.77 GiB; /etc/mnttab - 0 bytes; /tmp - 13.82 GiB;</p> 
 

 
<h2>After:</h2> 
 
<p class="after"></p>

1

これを試してください選択します。

str.split(';').filter(item => !item.includes('0 bytes') && !item.includes('/platform/sun4v/lib/sparcv9/libc_psr.so.1')).join(';') 
0

私はあなたがまだ同じ形式で出力したいと思っています。これはあなたのために働く必要があります。

function formatInfo(data) { 
    return data.split(";").filter(function(item,i) { 
     if(item.indexOf('0 bytes') >= 0 || item.indexOf('/platform/sun4v/lib/sparcv9/libc_psr.so.1') >= 0) { 
      return null; 
     } 
     return item.trim(); 
    }).join(";").trim(); 
} 

//使用法:

formatInfo('/devices - 0 bytes; /system/object - 0 bytes; /etc/dfs/sharetab - 0 bytes; /dev/fd - 0 bytes; /var/run - 13.77 GiB; /platform/sun4v/lib/sparcv9/libc_psr.so.1 - 27.24 GiB;/- 27.24 GiB; /var - 26.84 GiB; /proc - 0 bytes; /system/contract - 0 bytes; /rpool - 18.04 GiB; /mnt - 157.67 TiB; /vol - 0 bytes; /was8 - 48.26 GiB; /platform/sun4v/lib/libc_psr.so.1 - 27.24 GiB; /etc/svc/volatile - 13.77 GiB; /etc/mnttab - 0 bytes; /tmp - 13.82 GiB;'); 

//は返す必要があります:

"/var/run - 13.77 GiB;/- 27.24 GiB; /var - 26.84 GiB; /rpool - 18.04 GiB; /mnt - 157.67 TiB; /was8 - 48.26 GiB; /platform/sun4v/lib/libc_psr.so.1 - 27.24 GiB; /etc/svc/volatile - 13.77 GiB; /tmp - 13.82 GiB" 

乾杯..!

関連する問題