Javascript Java脚本:如何根据条件替换多个字符串

Javascript Java脚本:如何根据条件替换多个字符串,javascript,string,Javascript,String,以下字符串的格式为名称和值('name'-'value';)。 如何删除值'0 bytes'及其名称和 删除名称'/platform/sun4v/lib/sparcv9/libc_psr.so.1'及其值 /设备-0字节/系统/对象-0字节/etc/dfs/sharetab-0 字节/dev/fd-0字节/风险值/运行-13.77吉布; /平台/sun4v/lib/sparcv9/libc_psr.so.1-27.24 GiB;/-27.24吉布; /var-26.84吉布/proc-0字节/系

以下字符串的格式为名称和值('name'-'value';)。 如何删除值
'0 bytes'
及其名称和 删除名称
'/platform/sun4v/lib/sparcv9/libc_psr.so.1'
及其值

/设备-0字节/系统/对象-0字节/etc/dfs/sharetab-0 字节/dev/fd-0字节/风险值/运行-13.77吉布; /平台/sun4v/lib/sparcv9/libc_psr.so.1-27.24 GiB;/-27.24吉布; /var-26.84吉布/proc-0字节/系统/合同-0字节/rpool -18.04吉布/mnt-157.67 TiB/vol-0字节/为8-48.26吉布/平台/sun4v/lib/libc_psr.so.1-27.24gib/etc/svc/volatile- 13.77吉布/etc/mnttab-0字节/tmp-13.82吉布


拆分selicolon上的字符串并根据条件筛选数组,然后加入数组以添加分号并转换回一个字符串:

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);

您可以在这里使用正则表达式来转换字符串

请参见:

  • 第一个正则表达式(
    /\/platform\/sun4v\/lib\/sparcv9\/libc\u psr\.so\.1[^\]+\\s/
    )选择长且唯一的子字符串
  • 第二个正则表达式(
    /\/[^\-]+-0字节\;\s/g
    )选择
    -0字节的所有实例(以及每个实例前面的标签)
  • var paragraphAfter=document.getElementsByClassName('after')[0];
    var textBefore=document.getElementsByClassName('before')[0]。textContent;
    var textAfter=textBefore.replace(/\/platform\/sun4v\/lib\/sparcv9\/libc\u psr\.so\.1[^\]+\\s/,'');
    var textfeater=textfeater.replace(/\/[^\-]+-0字节\;\s/g',);
    paragraphAfter.textContent=textAfter
    
    之前:
    

    /devices-0字节/系统/对象-0字节/etc/dfs/sharetab-0字节/dev/fd-0字节/风险值/运行-13.77吉布/平台/sun4v/lib/sparcv9/libc_psr.so.1-27.24 GiB/var-26.84吉布/proc-0字节/系统/合同-0字节/rpool-18.04吉布/mnt-157.67 TiB/vol-0字节/为8-48.26吉布/平台/sun4v/lib/libc_psr.so.1-27.24gib/etc/svc/volatile-13.77吉布/etc/mnttab-0字节/tmp-13.82吉布

    之后:

    试试这个

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

    我相信您仍然希望输出的格式相同。这应该适合您:

    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"
    
    干杯