使用javascript在两端修剪字符串

时间:2013-01-08 11:48:08

标签: javascript string trim

  

可能重复:
  How do I trim a string in javascript?

我的字符串来自ajax响应

"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\tERROR: Profile : NOT SUCCESS\nCODE        : 2\nCATEGORY    : TECHNICAL\nSEVERITY    : null\nENVIRONMENT : DEV\nAPPLICATION : DEV\nDESCRIPTION : Profile: INVOCATION UNHANDLED EXCEPTION [null]\nDESCRIPTION : Profile: [ServiceAttribute]\nDESCRIPTION : Profile: Instance ID = 20130108124231841\n\r\n\r\n"

我使用下面的代码修剪两端的字符串。

  

var text = originalRequest.responseText.replace(/ ^ \ s + | \ s + $ / g,'');

然而,它正在删除来自ajax响应的消息之间的\ n。 我最终想要的是

"ERROR: Profile : NOT SUCCESS
CODE        : 2
CATEGORY    : TECHNICAL
SEVERITY    : null
ENVIRONMENT : DEV
APPLICATION : DEV
DESCRIPTION : Profile: INVOCATION UNHANDLED EXCEPTION [null]
DESCRIPTION : Profile: [ServiceAttribute]
DESCRIPTION : Profile: Instance ID = 20130108124231841"

我怎么得到这个?尝试过去1小时的不同方式:(

3 个答案:

答案 0 :(得分:5)

只需使用trim();

var s = "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\tERROR: Profile : NOT SUCCESS\nCODE        : 2\nCATEGORY    : TECHNICAL\nSEVERITY    : null\nENVIRONMENT : DEV\nAPPLICATION : DEV\nDESCRIPTION : Profile: INVOCATION UNHANDLED EXCEPTION [null]\nDESCRIPTION : Profile: [ServiceAttribute]\nDESCRIPTION : Profile: Instance ID = 20130108124231841\n\r\n\r\n";
console.log(s.trim());

"ERROR: Profile : NOT SUCCESS
CODE        : 2
CATEGORY    : TECHNICAL
SEVERITY    : null
ENVIRONMENT : DEV
APPLICATION : DEV
DESCRIPTION : Profile: INVOCATION UNHANDLED EXCEPTION [null]
DESCRIPTION : Profile: [ServiceAttribute]
DESCRIPTION : Profile: Instance ID = 20130108124231841"

如果trim()不可用(IE 8-),请尝试此polyfill:

if(!String.prototype.trim) {
    String.prototype.trim = function () { 
        return this.replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,'');
    });
}

答案 1 :(得分:1)

您可以从使用原生replace()开始两次(重新格式化以查看reg exp):

"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\tERROR: Profile : NOT SUCCESS\nCODE        : 2\nCATEGORY    : TECHNICAL\nSEVERITY    : null\nENVIRONMENT : DEV\nAPPLICATION : DEV\nDESCRIPTION : Profile: INVOCATION UNHANDLED EXCEPTION [null]\nDESCRIPTION : Profile: [ServiceAttribute]\nDESCRIPTION : Profile: Instance ID = 20130108124231841\n\r\n\r\n"
     .replace(/^\s+/, "")
     .replace(/\s+$/, "")

给出:

ERROR: Profile : NOT SUCCESS
CODE        : 2
CATEGORY    : TECHNICAL
SEVERITY    : null
ENVIRONMENT : DEV
APPLICATION : DEV
DESCRIPTION : Profile: INVOCATION UNHANDLED EXCEPTION [null]
DESCRIPTION : Profile: [ServiceAttribute]
DESCRIPTION : Profile: Instance ID = 20130108124231841

答案 2 :(得分:1)

由于一些奇怪的原因,我不喜欢正则表达式。我尽可能地寻找其他方法。对于那些分享我的观点的人来说,这里是纯JavaScript代码,可根据您的字符列表自定义字符串:

function MyTrim(text) {
    //turn into a string in case it's other type:
    var result = text + "";

    //trim leading characters:
    while (result.length > 0 && IsWhiteSpace(result[0]))
        result = result.substr(1, result.length - 1);

    //trim trailing characters:
    while (result.length > 0 && IsWhiteSpace(result[result.length - 1]))
        result = result.substr(0, result.length - 1);

    return result;
}

function IsWhiteSpace(c) {
    return c == " " || c == "\r" || c == "\n" || c == "\t";
}

在你的情况下:

var text = MyTrim(originalRequest.responseText);

Live test case