省略内容在句子中间

一、使用二分查找法

每次查找时,将查找范围分成两半,并判断目标值位于哪一半,从而逐步缩小查找范围。

循环查找

  1. 计算中间位置 mid = Math.floor((low + high) / 2)
  2. 比较目标值 target 和中间位置的元素 arr[mid]
    1. 如果 target == arr[mid],则找到目标值,返回 mid
    2. 如果 target < arr[mid],则目标值在左半部分,更新 high = mid - 1
    3. 如果 target > arr[mid],则目标值在右半部分,更新 low = mid + 1。

终止条件

  1. 当 low > high 时,表示查找范围为空,目标值不存在于数组中,返回 -1 或其他表示未找到的标志。
function binarySearch(arr, target) {let low = 0;let high = arr.length - 1;while (low <= high) {const mid = Math.floor((low + high) / 2);if (arr[mid] === target) {return mid; // 找到目标值,返回索引} else if (arr[mid] < target) {low = mid + 1; // 目标值在右半部分} else {high = mid - 1; // 目标值在左半部分}}return -1; // 未找到目标值
}// 示例使用
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const target = 7;
console.log(binarySearch(arr, target)); // 输出: 6

<template><div class="ellipsis-container" ref="ellipsisContainer">{{ startText }}...{{ endText }}</div>
</template><script>
import { defineComponent, ref, onMounted, watch } from 'vue';export default defineComponent({props: {endLen: {type: Number,default: 10,},text: {type: String,default: '外层套一个块级(block)元素,内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性ne元素。给外层元素设置溢出隐藏的样式外层套一个块级(block)元素,内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性ne元素。给外层元素设置溢出隐藏的样式外层套一个块级(block)元素,内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性ne元素。给外层元素设置溢出隐藏的样式外层套一个块级(block)元素,内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性ne元素。给外层元素设置溢出隐藏的样式',},startLen: {type: Number,default: null,},},setup (props) {const ellipsisContainer = ref(null);const str = ref(props.text);const startText = ref('');const endText = ref('');const updateText = () => {if (!ellipsisContainer.value) return;let containerWidth = ellipsisContainer.value.clientWidth;let fullText = str.value;let startTextLength = 0;let endTextLength = 0;// 使用二分查找法找到合适的截断位置let low = 0;let high = fullText.length;while (low <= high) {let mid = Math.floor((low + high) / 2);let tempStartText = fullText.substring(0, mid);let tempEndText = fullText.substring(fullText.length - mid);let combinedText = `${tempStartText}...${tempEndText}`;ellipsisContainer.value.textContent = combinedText;if (ellipsisContainer.value.scrollWidth <= containerWidth) {startTextLength = mid;endTextLength = mid;low = mid + 1;} else {high = mid - 1;}}startText.value = fullText.substring(0, startTextLength);endText.value = fullText.substring(fullText.length - endTextLength);console.log('startText:', startText.value);console.log('endText:', endText.value);};onMounted(() => {console.log('Component mounted');updateText();});return {ellipsisContainer,startText,endText,};},
});
</script><style scoped>
.ellipsis-container {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;text-emphasis: none;position: relative;width: 500px;max-width: 600px;
}
</style>

二、字符串处理

就是将需字符串截取对应的字符拼接到省略号尾部。

用于提取字符串中介于两个指定下标之间的部分:str.substring(start [, end])

  1. start:必需,提取的起始下标(从0开始)。如果为负数,则会将该值视为0。
  2. end:可选,提取的结束下标(不包括此位置的字符)。如果省略,则提取到字符串结尾;如果此参数小于 start 参数,则两者会被交换;如果为负数,则会将该值视为0。
    let str = { value: 'hello world' };
    console.log(str.value.substring(0, 5)); // 输出: hello
    console.log(str.value.substring(6));   // 输出: world

<template><div><Ellipsis endLen="8" /><Ellipsis endLen="5" /><Ellipsis endLen="5" text="外层套一个块级(block)元素" /><Ellipsis endLen="10" text="外层套一个" /></div>
</template><script setup>
import Ellipsis from './Ellipsis.vue';
</script>
<template><div class="flex"><!-- 显示截断后的文本和省略部分 --><div class="truncate">{{ truncatedText }}</div><div class="shrink-0">{{ endText }}</div></div>
</template><script setup>
import { ref, computed } from 'vue';// 定义组件的属性,包括endLen和text
const props = defineProps({endLen: {type: Number,default: 10,},text: {type: String,default: '外层套一个块级(block)元素外层套一个块级(block)元素外层套一个块级(block)元素外层套一个块级(block)元素',},
});// 设置默认文本内容
const defaultText = '外层套一个块级(block)元素、内部是一个行内(inline)元素。给外层元素设置溢出隐藏的样式属性ne)元素。给外层元素设置溢出隐藏的样式';
// 使用ref创建响应式变量str,用于存储文本内容
const str = ref(props.text || defaultText);// 计算截断后的文本
const truncatedText = computed(() => str.value.substring(0, str.value.length - props.endLen));
// 计算末尾的文本
const endText = computed(() => str.value.substring(str.value.length - props.endLen, str.value.length));
</script><style scoped lang="scss">
.flex {display: flex;
}.truncate {overflow: hidden; // 隐藏超出容器的内容white-space: nowrap; // 不换行显示文本text-overflow: ellipsis; // 当内容超出容器时,显示省略号
}.shrink-0 {flex-shrink: 0; // 确保该元素不会缩小
}
</style>

三、Css伪类

<template><ul class="con"><li class="wrap"><span class="txt"> CSS 实现中间内容省略的技巧 - 2024-12-19</span><span class="title" title="CSS 实现中间内容省略的技巧 - 2024-12-19">CSS 实现中间内容省略的技巧 - 2024-12-19</span></li><!-- 其他列表项 --></ul>
</template><script setup>
</script><style scoped>
/* 容器样式 */
.con {font-size: 14px;/* 设置字体大小 */color: #666;/* 设置文字颜色 */width: 600px;/* 设置容器宽度 */margin: 50px auto;/* 设置上下外边距为50px,左右居中 */border-radius: 8px;/* 设置圆角 */padding: 15px;/* 设置内边距 */overflow: hidden;/* 隐藏溢出内容 */resize: horizontal;/* 允许水平调整大小 */box-shadow: 20px 20px 60px #bebebe, -20px -20px 60px #ffffff;/* 添加阴影效果 */
}/* 列表项样式 */
.wrap {position: relative;/* 相对定位 */line-height: 2;/* 设置行高 */height: 2em;/* 设置高度 */padding: 0 10px;/* 设置左右内边距 */overflow: hidden;/* 隐藏溢出内容 */background: #fff;/* 设置背景色 */margin: 5px 0;/* 设置上下外边距 */
}/* 奇数行列表项样式 */
.wrap:nth-child(odd) {background: #f5f5f5;/* 设置背景色 */
}/* 标题样式 */
.title {display: block;/* 块级元素 */position: relative;/* 相对定位 */background: inherit;/* 继承背景色 */text-align: justify;/* 文字两端对齐 */height: 2em;/* 设置高度 */overflow: hidden;/* 隐藏溢出内容 */top: -4em;/* 向上偏移4em,可能需要根据实际情况调整 */
}/* 文本样式 */
.txt {display: block;/* 块级元素 */max-height: 4em;/* 设置最大高度 */
}/* 伪元素样式 */
.title::before {content: attr(title);/* 使用title属性的值 */width: 50%;/* 设置宽度 */float: right;/* 右浮动 */white-space: nowrap;/* 防止换行 */overflow: hidden;/* 隐藏溢出内容 */text-overflow: ellipsis;/* 显示省略号 */direction: rtl;/* 从右到左的方向 */
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中解决Edit Configurations中没有tomcat Server选项的问题

今天使用IDEA2024专业版的时候,发现Edit Configurations里面没有tomcat Server,最终找到解决方案。 一、解决办法 1、打开Settings 2、搜索tomcat插件 搜索tomcat插件之后,找到tomcat 发现tomcat插件处于未勾选状态,然后我们将其勾选保存即可。 二、结果展示 最后,再次编…

UE5中实现Billboard公告板渲染

公告板&#xff08;Billboard&#xff09;通常指永远面向摄像机的面片&#xff0c;游戏中许多技术都基于公告板&#xff0c;例如提示拾取图标、敌人血槽信息等&#xff0c;本文将使用UE5和材质节点制作一个公告板。 Gif效果&#xff1a; 网格效果&#xff1a; 1.思路 通过…

LabVIEW在电液比例控制与伺服控制中的应用

LabVIEW作为一种图形化编程环境&#xff0c;广泛应用于各类控制系统中&#xff0c;包括电液比例控制和伺服控制领域。在这些高精度、高动态要求的控制系统中&#xff0c;LabVIEW的优势尤为突出。以下从多个角度探讨其应用与优势&#xff1a; ​ 1. 灵活的控制架构 LabVIEW为电…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读&#xff1a;随着数据量的快速增长&#xff0c;传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战&#xff0c;Spark SQL 引入了多种优化技术&#xff0c;以提高查询效率&#xff0c;降低计算开销。本文从表达式层面探讨了 Spark…

unity webgl部署到iis报错

Unable to parse Build/WebGLOut.framework.js.unityweb! The file is corrupt, or compression was misconfigured? (check Content-Encoding HTTP Response Header on web server) iis报错的 .unityweb application/octet-stream iis中添加 MIME类型 .data applicatio…

CXF WebService SpringBoot 添加拦截器,处理响应报文格式

描述 XFIRE升级CXF框架&#xff0c;但是对接的系统不做调整&#xff0c;这时候就要保证参数报文和响应报文和以前是一致的。但是不同的框架有不同的规则&#xff0c;想要将报文调整的一致&#xff0c;就需要用到拦截器拦截报文&#xff0c;自定义解析处理。 CXF框架本身就是支…

基于Spring Boot的雅苑小区管理系统

一、系统背景与意义 随着信息化技术的快速发展&#xff0c;传统的小区物业管理方式已经难以满足现代居民对于高效、便捷服务的需求。因此&#xff0c;开发一款基于Spring Boot的小区管理系统显得尤为重要。该系统旨在通过信息化手段&#xff0c;实现小区物业管理的智能化、自动…

Docke_常用命令详解

这篇文章分享一下笔者常用的Docker命令供各位读者参考。 为什么要用Docker? 简单来说&#xff1a;Docker通过提供轻量级、隔离且可移植的容器化环境&#xff0c;使得应用在不同平台上保持一致性、易于部署和管理&#xff0c;具体如下 环境一致性&#xff1a; Docker容器使得…

Ubuntu 20.04下Kinect2驱动环境配置与测试【稳定无坑版】

一、引言 微软Kinect2传感器作为一个包含深度传感器、RGB摄像头以及红外摄像头的多模态采集设备&#xff0c;在计算机视觉、机器人感知、人体姿态识别、3D建模等领域有着广泛应用。相比第一代Kinect&#xff0c;Kinect2拥有更好的深度分辨率和更高的数据质量。本文将详细介绍如…

Flask入门:打造简易投票系统

目录 准备工作 创建项目结构 编写HTML模板 编写Flask应用 代码解读 进一步优化 结语 Flask,这个轻量级的Python Web框架,因其简洁和易用性,成为很多开发者入门Web开发的首选。今天,我们就用Flask来做一个简单的投票系统,让你快速上手Web开发,同时理解Flask的核心概…

Cadence学习笔记 9 器件封装匹配

基于Cadence 17.4&#xff0c;四层板4路HDMI电路 更多Cadence学习笔记&#xff1a;Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制Cadence学习笔记 5 四路HDMI原理图绘制Cadence学习笔记…

2011年IMO几何预选题第5题

△ A B C \triangle ABC △ABC 内心为 I I I, 外接圆在 B B B, C C C 两点处的切线交于 P P P, D D D, E E E 分别为 B I BI BI, C I CI CI 与外接圆的交点, D E DE DE 分别交 A B AB AB, A C AC AC 于点 M M M, N N N, 过 M M M 作 B I BI BI 平行线, 过 N N …

Nginx常用配置详解(1)

Nginx常用配置详解 一、全局块&#xff08;main&#xff09;配置 在Nginx的配置文件中&#xff0c;最外层的部分是全局块。这部分配置通常会影响Nginx服务器整体的运行参数。 worker_processes 作用&#xff1a;这个配置指令用于指定Nginx工作进程的数量。工作进程是Nginx处理…

单幅图像合成 360° 3D 场景的新方法:PanoDreamer,可同时生成全景图像和相应的深度信息。

论文介绍了一种从单幅图像合成 360 3D 场景的新方法。该方法以连贯的方式生成全景图及其相应的深度&#xff0c;解决了现有最先进方法&#xff08;如 LucidDreamer 和 WonderJourney 的局限性。这些方法按照生成轨迹依次添加细节&#xff0c;通常在循环回输入图像时导致可见的接…

Linux —— 管理进程

一、查看进程 运行态&#xff08;Running&#xff09; 定义&#xff1a;处于运行态的进程正在 CPU 上执行指令。在单 CPU 系统中&#xff0c;同一时刻只有一个进程处于运行态&#xff1b;在多 CPU 或多核系统中&#xff0c;可能有多个进程同时处于运行态。示例&#xff1a; 当…

前端(组件传参案例)

父组件(商品详情页) 子组件上边放大图 底下缩小轮播图 需求分析&#xff1a;父组件获取图片数据&#xff0c;传给底下子组件进行进行轮播&#xff0c;实现父组件给子组件传参。然后底下子组件轮播后&#xff0c;把当前图片下标给父组件&#xff0c;实现子组件给父组件传参。父组…

What‘s Next on TON 成都站|聚焦生态创新,共享技术前沿

2024 年&#xff0c;TON 生态为何持续吸引全球开发者和用户的关注&#xff1f;在经历了一系列重要的技术更新和生态扩展后&#xff0c;TON 正在迎来一个爆发式增长的阶段。作为全球四城巡回沙龙的第三站&#xff0c;成都站的活动将如何继续推动这一势头&#xff0c;带来哪些不容…

算法-动态数组-62.不同路径

一、题目 二、思路解析 1.思路&#xff1a; 对于找到目的地它的来源主要来源于目的地的上一格和目的地的左一格 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.处理边界&#xff1a; a.只向右移动&#xff0c;至始至终只有一条路径 for(int i0;i<m;i){dp[i][0]1; } …

近端策略优化(Proximal Policy Optimization, PPO)详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Windows 系统如何高效搭建 Linux 开发环境,一步步解锁内核源码

每日禅语 人闲桂花落&#xff0c;夜静春山空。月出惊山鸟&#xff0c;时鸣春涧中。人人皆以为王维只是在写自然界景物的美丽&#xff0c;其实这首诗不只体现了自然界的美丽&#xff0c;更是诗人内心的写照&#xff0c;体现了诗人心中禅心与禅境的完美结合。这首诗的境界之所以如…