V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
tianxiacangshen
V2EX  ›  JavaScript

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

  •  
  •   tianxiacangshen · 2017-12-05 08:52:06 +08:00 · 2709 次点击
    这是一个创建于 2544 天前的主题,其中的信息可能已经有所发展或是发生改变。
    感觉有点麻烦,前后不能单纯以空格判断,有可能是标点,但又不能是所有标点,比如这段:

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

    在 V2EX 上点击一下就选择“ https://www.v2ex.com 是一个好网站”这一句,前后可以根据标点判断,但是要把:这个标点排除,否则只会选择“//www.v2ex.com 是一个好网站”这部分,想来想去正则不知道怎么写。
    9 条回复    2017-12-06 12:50:40 +08:00
    yangg
        1
    yangg  
       2017-12-05 09:36:31 +08:00
    lz 既然已经解决了怎么定义为一句的问题,剩下就简单了
    个人建议: 输出时分好句(不一定得正则啊),点击直接选择就好了
    ffkjjj
        2
    ffkjjj  
       2017-12-05 09:53:03 +08:00 via iPhone
    通过正则匹配 : 前后类容,如果是网址的话就继续 向前|向后 匹配。
    我觉得,通过一些分词的 api 应该可以更简单实现你的需求。通过分词之后,应该就可以直接进行标点匹配了。PS.不过我没实际尝试过,感觉可以试试。
    lhx2008
        3
    lhx2008  
       2017-12-05 10:00:04 +08:00 via Android
    分词 api
    billion
        4
    billion  
       2017-12-05 10:34:06 +08:00
    有一种东西叫做有限状态机,你去了解一下吧。
    duan602728596
        5
    duan602728596  
       2017-12-05 10:34:12 +08:00 via iPhone
    const range = document.createRange();
    range.selectNode(document.getElementById(ele));
    const selection = window.getSelection();
    if(selection.rangeCount > 0) {
    selection.removeAllRanges();
    }
    selection.addRange(range);
    tianxiacangshen
        7
    tianxiacangshen  
    OP
       2017-12-05 10:47:17 +08:00
    @ffkjjj 分词之后只是把句子打散了?怎么判断哪些标点是网址里面的呢,你前面说的如果是网址的话就继续 向前|向后 匹配 应该靠谱一点
    ffkjjj
        8
    ffkjjj  
       2017-12-06 12:05:02 +08:00 via iPhone
    @tianxiacangshen 因为分词 api 不会把网址打断,你就可以直接根据标点来判断句子首尾了。
    下面图中是 PIN 软件里面的分词功能
    https://i.loli.net/2017/12/06/5a2769242aa0e.jpeg
    ffkjjj
        9
    ffkjjj  
       2017-12-06 12:50:40 +08:00 via iPad
    @tianxiacangshen https://i.loli.net/2017/12/06/5a2776468ae54.png
    你也可以通过这种正则思路来进行分句子。英语情景差不多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:53 · PVG 05:53 · LAX 13:53 · JFK 16:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.