用 .replace 替换字符串中的空格

Replacing whitespace in a string with .replace

    $(document).ready(function(){
        $('.shoppingBasket tr').each(function() {
            var pName = $(this).find("span.pastorder-productname").text().trim().match(/\w*\s\X\d/g);

            if (pName != null) {
                var pQuantity = $(this).find("td.cart-quantity").text().trim();
                pName = pName.replace(/\s+/g, '');
                console.log(pName);

            }  
        });
    });

我有这段代码可以遍历收据中列出的所有项目并获取它们的名称(通常产品名称周围有额外的东西,我只想要产品名称 "Something XY"。我知道这工作正常,就像我打印出 pName 一样,这正是我所期望的。

但是,我们发现我们使用的一些方法不喜欢名称中有 space,所以我的目标是使用 .replace 方法删除 space字符串的中间。

我尝试使用:

            var pName = $(this).find("span.pastorder-productname").text().trim().match(/\w*\s\X\d/g).replace(/\s+/g, '');

但我收到错误:未捕获类型错误:无法读取 属性 'replace' of null

之后,我尝试将它添加到循环中并具有:

            if (pName != null) {
                var pQuantity = $(this).find("td.cart-quantity").text().trim();
                pName = pName.replace(/\s+/g, '');
                console.log(pName);

            }  

但我收到错误:Uncaught TypeError: Cannot read property 'replace' of null

我很确定我在做一些愚蠢的事情,但我不确定是什么,有什么建议吗?

尝试:

if(pName!==null){
    pName = pName.text().replace(/\s+/g, '');
}

我设法让它为我工作:

            var pName = $(this).find("span.pastorder-productname").text().trim().replace(/\s+/g, '').match(/\w*\X\d/g);

这似乎给了我想要的结果。