javascript无法识别空格字符

时间:2017-03-31 01:54:31

标签: javascript string

我从REST服务获得堆栈跟踪,如下所示:

 oracle.mds.core.MetadataNotFoundException: MDS-00013: no metadata found for metadata object "/WEB-INF/root_menu_tm.xml" [[MDS-00201: PDocument not found in MetadataStore : [store-type=DefaultMetadataStore app-name=ORA_CRM_UIAPP lookup-order=ServletContext,Classpath]     at oracle.mds.core.MetadataObject.getBaseMO(MetadataObject.java:1600)   at oracle.mds.core.MDSSession.getMetadataObject(MDSSession.java:1663)   at oracle.apps.fnd.applcore.patterns.uishell.model.ApplicationsMenuModel.getMetadatObject(ApplicationsMenuModel.java:891)   at oracle.apps.fnd.applcore.patterns.uishell.model.ApplicationsMenuModel._createModel(ApplicationsMenuModel.java:492)   at oracle.apps.fnd.applcore.patterns.uishell.model.ApplicationsMenuModel.setSource(ApplicationsMenuModel.java:177)  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at 

我试图在我的javascript中格式化它,然后在UI上显示。这个想法很简单:只需替换所有

<space>at

<br/>at

我尝试了各种选项:

var trace = (d.MsgDetails).replace(new RegExp('\sat','g'),'</p><p>at');

var trace = (d.MsgDetails).replace(new RegExp(' at','g'),'</p><p>at');

 var trace = (d.MsgDetails).replace(/at/g),'</p><p>at');

 var trace = (d.MsgDetails).replace(/ at/g),'</p><p>at');

没有任何作用。我希望它看起来的空间真的是一个空间。删除空间工作正常,但这不是我想要的,因为它也会打破好话。

1 个答案:

答案 0 :(得分:1)

“at”之前的字符是一个标签,所以:

var trace = d.MsgDetails.replace(/\tat/g, '</p><p>at');

(如果您在整个\s的字符串文字中转义了\,那么第一个带有\\s的正则表达式就会有用;字符串文字'\s'相当于's'。不要使用RegExp构造函数来创建静态正则表达式。)

如果其中有一些换行符,那么更简洁的解决方案可能是:

var traceLines = d.MsgDetails.split('\n');
var trace = document.createDocumentFragment();

traceLines.forEach(function (line) {
    trace.appendChild(document.createElement('p')).textContent = line;
});