vue文本识别"\n"换行问题的解决方式

目录
  • 一、通过 css属性 实现
  • 二、使用v-html实现
  • 三、<pre>标签
  • 附实践模块,温馨提示 基于vant改造
  • 总结

在 vue 项目,有时请求返回的数据 中会有含有 \n 的字符串,如果直接渲染的话无法实现换行。

一、通过 css属性 实现

设置 white-space: pre-wrap;  代码如下:

<div style="white-space: pre-wrap;">{{含有\n的字符串}}</div>

扩展:

white-space属性值:

描述
normal 默认。空白会被浏览器忽略。
pre 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。
nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。
pre-wrap 保留空白符序列,但是正常地进行换行。
pre-line 合并空白符序列,但是保留换行符。
inherit 规定应该从父元素继承 white-space 属性的值。

二、使用v-html实现

首先,将字符串里的 \n 替换为 <br>,然后用 v-html 指令渲染字符串为 innerHTML 。 代码如下:

// JS部分
this.text = res.data.replace(/\n/g,'<br>')
// HTML部分
<div v-html="text"></div>

三、<pre>标签

pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。代码如下:

<pre>{{含有\n的字符串}}</pre>

注意:在选择<pre>标签时,如果文字太长的行可能会撑开固定宽度的容器或者超出容器范围。解决方法:

pre {
//方法一:保留空白符序列,但是正常地进行换行。
  white-space: pre-wrap;
//方法二:添加横向滚动条
  overflow-x: auto;
}

最后,虽然三种方法都可以实现,但本人比较推荐前两种。

附实践模块,温馨提示 基于vant改造

效果图:   并且点击黄色部分会进行伸缩

html部分

<div>
          <!-- 文字较长时,通过禁用 scrollable 属性关闭滚动播放 -->
            <van-notice-bar
                v-if="deptTip"
                background="#FFFBE8"
                :scrollable="false"
                wrapable
            >
                <div @click="showAllFn" v-cloak id="showAllclamp2" :class="[showAll?'':'clamp2']">
                     <van-icon style="float: left;line-height: 24px;padding-right: 7px;" name="volume-o" ></van-icon>
                     <div id="deptTip" v-html="deptTip"></div>
                </div>
                <template v-slot:right-icon>
                    <van-icon  style="position: absolute;right: 5px;bottom: 10px;" :name="icon" ></van-icon>
                </template>
            </van-notice-bar>
       </div>

css部分

.clamp2{
                overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2; -webkit-box-orient: vertical;
            }

js 部分

隐藏和展示的时候

showAllFn(){
            this.showAll=!this.showAll
            this.showAll?this.deptTip=this.deptTip.replace(/\n/g,'<br>'):this.deptTip=this.deptTip2
        }

总结

到此这篇关于vue文本识别“\n”换行问题解决的文章就介绍到这了,更多相关vue文本识别\n换行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在vue中利用v-html按分号将文本换行的例子

    最近在开发的时候遇到这样一个需求,需要将一段文本按照分号(有中文分号和英文分号)进行换行操作. 如下: 换行前:雷军,2457.66万,自然人股东;洪锋,169.51万,自然人股东;黎万强,10.33万,自然人股东; 换行后: 雷军,2457.66万,自然人股东; 洪锋,169.51万,自然人股东; 黎万强,10.33万,自然人股东; 显示的html: <p class="bgnr-txt" v-html="change(content)"> js: m

  • vue文本识别"\n"换行问题的解决方式

    目录 一.通过 css属性 实现 二.使用v-html实现 三.<pre>标签 附实践模块,温馨提示 基于vant改造 总结 在 vue 项目,有时请求返回的数据 中会有含有 \n 的字符串,如果直接渲染的话无法实现换行. 一.通过 css属性 实现 设置 white-space: pre-wrap;  代码如下: <div style="white-space: pre-wrap;">{{含有\n的字符串}}</div> 扩展: white-spa

  • vue中touch和click共存的解决方式

    在vue开发手机端项目时,我们经常会遇到touch和click共存的情况,比如城市选择页面的字母滑动 touch事件在手机端会触发浏览器滑动,所以应给touch事件添加阻止默认行为touchmove.prevent.注意阻止默认行为事件不要添加在touchstart事件上,会影响到click事件的发生. touch事件和click事件发生先后顺序: touchstart,touchmove,touchend,click 补充知识:touchstart与click同时触发 产生冲突的原因 我们可以

  • @vue/cli4升级@vue/cli5 node.js polyfills错误的解决方式

    目录 一.错误描述 二.错误日志 1.日志内容: 2.错误原因 3.解决方法[可以使用的方法] 4.解决办法[存在问题,需要研究还] 总结 一.错误描述 因前端项目做的少,今天用 vue脚手架创建项目选择了 @vue/cli 5.0 版本,在编译项目时出现如下错误: 二.错误日志 1.日志内容: 错误1: error  in ./node_modules/jwa/index.js Module not found: Error: Can't resolve 'crypto' in 'H:\iWo

  • php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】

    本文实例讲述了php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法.分享给大家供大家参考,具体如下: 下面这几个方法将能够帮你解决这个问题. PHP版将html中的<br />换行符转换为文本框中的换行符: 代码如下: function br2nl($text){ return preg_replace('/<br\\s*?\/??>/i','',$text); } 或者 代码如下: function br2nl($text){ $text=preg_r

  • Python2实现的图片文本识别功能详解

    本文实例讲述了Python2实现的图片文本识别功能.分享给大家供大家参考,具体如下: 这里需要用到python的几个库,分别是pytesser,以及pytesser的依赖库PIL.python的版本建议用2.7或者2.7一下的都行,不建议用python3以上的,因为python3不向下兼容,所以有很多python2的东西它不支持 pytesser下载的话,我直接在pycharm里面下全是失败,用DOS的命令行下也是失败,所以还是自己直接去google下吧 地址:http://code.googl

  • Vue打包部署到Nginx时,css样式不生效的解决方式

    今天在将使用Vue-cli编写的前端项目部署到Nginx的时候发生了一件很困扰的问题: Vue-cli项目在本地 使用 npm run dev的时候,页面样式是可以正常加载出来的,但是我将Vue-cli项目通过npm run build 打包生成的 dist 目录部署到Nginx之后,通过访问是无法加载出来样式的. 于是乎,在网上开始寻找资料,发现大部分前辈的解决方案都是在,config的文件夹中的index.js assetsRoot: path.resolve(__dirname, '../

  • 详解提升场景文本识别中的语言模型

    一.语言模型定义 1. 什么是语言模型? 如图1所示,顾名思义,语言模型即根据当前语境的上下文推断当前句子的意思.具体的标准定义为:对于语言序列w1,w2,-wn,语言模型就是计算该序列的概率即P(w1,w2,-wn). 2. 为什么需要语言模型? 文本图像中包含两层信息:视觉纹理信息和语言信息.由于单纯根据视觉纹理信息进行文字识别缺少了对上下文的字符语义信息的挖掘,时常会导致错误的文本识别结果(之后会详细说明).因此如何获得鲁棒的语言信息来提升识别性能成为了最近场景文本识别任务中比较受欢迎的思

  • 基于vue 动态加载图片src的解决方法

    好久没更博了,最近也不知道在忙啥,反正就是感觉挺忙的,在群里看到陆陆续续有刚入vue小伙伴问vue动态加载图片总是404的状况,这篇就简单的说明为什么会出现以及解决办法有哪些. 首先先说明下vue-cli的assets和static的两个文件的区别,因为这对你理解后面的解决办法会有所帮助 assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src="./logo.png">和background:url(./logo.p

  • vue element-ui 绑定@keyup事件无效的解决方法

    解决办法: <el-input v-model="searchParmas.gameName" placeholder="游戏名称" class="w120" @keyup.native="getGameList(searchParmas.gameName)"></el-input> 加上.native覆盖原有封装的keyup事件即可. 以上这篇vue element-ui 绑定@keyup事件无效的解

  • vue页面加载闪烁问题的解决方法

    v-if 和 v-show 的区别 v-if只会在满足条件时才会编译,而v-show不管是否满足条件始终会编译,v-show的显示与隐藏只是简单的切换CSS的display属性. 也就是说,在使用v-if时,若值为false,那么页面将不会有这个html标签生成.而v-show:不论其值是false还是true,html元素都会存在,只是简单的切换css的display属性. 使用场景 一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗.因此,如果需要频繁切换 v-sho

随机推荐