点击文本选择整个句子的 js 如何实现?

2017-12-05 08:52:06 +08:00
 tianxiacangshen
感觉有点麻烦,前后不能单纯以空格判断,有可能是标点,但又不能是所有标点,比如这段:

https://www.v2ex.com 是一个好网站,这里有很多牛逼的人
到底有多牛逼呢?”

在 V2EX 上点击一下就选择“ https://www.v2ex.com 是一个好网站”这一句,前后可以根据标点判断,但是要把:这个标点排除,否则只会选择“//www.v2ex.com 是一个好网站”这部分,想来想去正则不知道怎么写。
2725 次点击
所在节点    JavaScript
9 条回复
yangg
2017-12-05 09:36:31 +08:00
lz 既然已经解决了怎么定义为一句的问题,剩下就简单了
个人建议: 输出时分好句(不一定得正则啊),点击直接选择就好了
ffkjjj
2017-12-05 09:53:03 +08:00
通过正则匹配 : 前后类容,如果是网址的话就继续 向前|向后 匹配。
我觉得,通过一些分词的 api 应该可以更简单实现你的需求。通过分词之后,应该就可以直接进行标点匹配了。PS.不过我没实际尝试过,感觉可以试试。
lhx2008
2017-12-05 10:00:04 +08:00
分词 api
billion
2017-12-05 10:34:06 +08:00
有一种东西叫做有限状态机,你去了解一下吧。
duan602728596
2017-12-05 10:34:12 +08:00
const range = document.createRange();
range.selectNode(document.getElementById(ele));
const selection = window.getSelection();
if(selection.rangeCount > 0) {
selection.removeAllRanges();
}
selection.addRange(range);
learnshare
2017-12-05 10:43:23 +08:00
tianxiacangshen
2017-12-05 10:47:17 +08:00
@ffkjjj 分词之后只是把句子打散了?怎么判断哪些标点是网址里面的呢,你前面说的如果是网址的话就继续 向前|向后 匹配 应该靠谱一点
ffkjjj
2017-12-06 12:05:02 +08:00
@tianxiacangshen 因为分词 api 不会把网址打断,你就可以直接根据标点来判断句子首尾了。
下面图中是 PIN 软件里面的分词功能
https://i.loli.net/2017/12/06/5a2769242aa0e.jpeg
ffkjjj
2017-12-06 12:50:40 +08:00
@tianxiacangshen https://i.loli.net/2017/12/06/5a2776468ae54.png
你也可以通过这种正则思路来进行分句子。英语情景差不多。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412015

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX