替换JavaScript对象值中的字符串
我有一个JSON文件,其中包含多个替换JavaScript对象值中的字符串,javascript,json,angularjs,Javascript,Json,Angularjs,我有一个JSON文件,其中包含多个标记。使用JSON.parse(JSON)将文件解析为对象。因为我用AngularJS和ng repeat绑定数据,所以我不希望字符串有任何HTML标记,并用新行替换它\n。如何替换所有标签?在我看来,replace()只适用于字符串 谢谢你的帮助 JSON示例 { "title": "Title", "description": "This<br />is<br />a<br />description."
标记。使用JSON.parse(JSON)
将文件解析为对象。因为我用AngularJS和ng repeat绑定数据,所以我不希望字符串有任何HTML标记,并用新行替换它\n
。如何替换所有标签?在我看来,replace()
只适用于字符串
谢谢你的帮助
JSON示例
{
"title": "Title",
"description": "This<br />is<br />a<br />description."
}
HTML
<div ng-repeat="item in data">
{{item.description}}
{{item.description}}
</div>
{{item.description}
{{item.description}
您可以在解析字符串之前替换它
var retrievedObject = JSON.parse(json.replace(/\<br \/\>/g, ''));
var retrievedObject=JSON.parse(JSON.replace(/\
/g',);
更好的选择是将字符串解析为HTML并提取不带标记的文本,在将它们插入DOM之前不使用正则表达式
var retrievedObject = JSON.parse(json.replace(/\<br \/\>/g, ''));
var retrievedObject=JSON.parse(JSON.replace(/\
/g',);
一个更好的选择是将字符串解析为HTML并提取不带标记的文本,而不是在将它们插入DOM之前使用正则表达式。有两种方法可以完成所需的操作。一个是css,您可以将br替换为 \n,然后在css文件中为元素提供pre-wrap的空白属性 另一个是安圭拉什语。读取绑定html的数据。您将能够实际输出br。您必须通过$sce的过滤器运行它,这样它才是可信的,但您的代码将非常简单:
<div ng-repeat="item in data">
<span data-ng-bind-html="item.description | trusted"></span>
<span data-ng-bind-html="item.description | trusted"></span>
</div>
有两种方法可以满足你的需求。一个是css,您可以将br替换为 \n,然后在css文件中为元素提供pre-wrap的空白属性 另一个是安圭拉什语。读取绑定html的数据。您将能够实际输出br。您必须通过$sce的过滤器运行它,这样它才是可信的,但您的代码将非常简单:
<div ng-repeat="item in data">
<span data-ng-bind-html="item.description | trusted"></span>
<span data-ng-bind-html="item.description | trusted"></span>
</div>
ngBindHtml
将允许您保留
并在HTML中呈现换行符。它将使用ngSanitize
自动清理您的输入,以去除任何不在其白名单中的标记(您必须将ngSanitize
作为依赖项带入)
视图非常简单,就像
<div ng-bind-html="item.description"></div>
您还可以使用
$sce.trustAsHtml()
告诉ngBindHtml
盲目信任HTML而不进行清理,但只有在您完全信任其内容的情况下才能这样做(即,不针对用户提交的评论等).ngBindHtml
将允许您保留
并在HTML中呈现换行符。它将使用ngSanitize
自动清理您的输入,以去除任何不在其白名单中的标记(您必须将ngSanitize
作为依赖项带入)
视图非常简单,就像
<div ng-bind-html="item.description"></div>
您也可以使用$sce.trustAsHtml()
告诉ngBindHtml
盲目信任HTML而不进行消毒,但只有在您完全信任其内容(即,不信任用户提交的评论等内容)的情况下才能这样做。可能重复的可能重复的感谢您的帮助。我忘了提到我想用新行替换标签,并在你回答我的问题时编辑了我的帖子。对不起,谢谢你的帮助。我忘了提到我想用新行替换标签,并在你回答我的问题时编辑了我的帖子。对不起,谢谢,这正是我需要的!我试过ngbind html
,但我不知道ngSanitize
并将其作为依赖项引入。谢谢,这正是我需要的!我试过ngbindhtml
,但我不知道ngSanitize
并将其作为依赖项引入。