You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何在指定字符“.”处切割字符串获取目标前缀子串

问题原因

slice() 方法的两个入参只接受数字类型的索引值:第一个是截取起始位置索引,第二个是截取结束位置索引。你传入字符串.作为第二个参数时,JS会将其隐式转换为NaN,导致截取逻辑失效,无法得到正确结果。

实现方案(无数组相关用法)

不需要借助数组操作,直接用字符串原生的indexOf()方法先定位.的位置索引,再做截取即可,完全匹配你的需求:

方法1:沿用slice实现

indexOf()会返回指定字符在字符串中第一次出现的数字索引,直接把这个值作为slice的结束位置参数即可,和你原本的代码思路最贴近:

<html>
<body>

<h1>JavaScript Strings</h1>
<h2>The slice() Method</h2>

<p id="demo"></p>

<script>
let text = "john.smith"; 
// 先定位.的位置
const dotIndex = text.indexOf(".");
// 从字符串开头截取到.的位置
let result = text.slice(0, dotIndex);

document.getElementById("demo").innerHTML = result; // 输出john
</script>

</body>
</html>

整个逻辑全程不涉及数组创建、数组方法调用,符合你的要求。

方法2:用substring实现(可选)

如果不想用slice,也可以换成字符串原生的substring()方法,传参逻辑完全一致:

let text = "john.smith";
const dotIndex = text.indexOf(".");
let result = text.substring(0, dotIndex); // 同样返回john

补充鲁棒性提示:如果业务场景中存在用户名不含.的情况,indexOf()会返回-1,你可以加一层判断,遇到这种情况直接返回原字符串即可,避免截取结果异常。

内容的提问来源于stack exchange,提问作者Hi1mNico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:21:18