【问题标题】:Split string at space or "/" or after max character after certain number of characters in Javascript在空格或“/”处或在Javascript中一定数量的字符之后的最大字符之后分割字符串
【发布时间】:2019-08-27 09:03:54
【问题描述】:

我知道有人问过很多类似的问题,这些问题对我有很大帮助,但我现在的问题是我不知道如何在空格或 / 之后分割字符串,如果没有则不知道空间或/在其中。

我目前正在处理一些需要打印的产品描述,有些太长需要拆分。 问题是没有人有相同的模式,有些人有空格或/或什么都没有,它需要在空格或/处分割才能阅读。 所以目前我得到了以下代码:

var res = str.match(/.{1,10}(\s||[/])/g) ;
  • 用于以下输入:STEP-PS/1AC/24DC/2.5

我得到了输出:STEP-PS/1A 和 C/24DC/2.5

并想获得:STEP-PS/1AC 和 /24DC/2.5 或 STEP-PS/1AC/ 和 24DC/2.5

  • 用于以下输入:AXL F DO16/3 XC 2F

我得到输出:AXL F DO16 和 /3 XC 2F 和空白

并且想得到:AXL F DO16 和 /3 XC 2F 没有空白输出

  • 对于以下输入:ASDFDDCL21EDFG

我得到正确的输出:ASDFDDCL21 和 EDFG

我应该改变什么以获得良好的输出,甚至有可能吗? (对不起我的英语)

【问题讨论】:

    标签: javascript regex match


    【解决方案1】:

    你可以试试这个

    .{1,10}(?:[^\s\/]+?[\s\/])?
    

    const regex = /.{1,10}(?:[^\s\/]+?[\s\/])?/g;
    const strs = ["STEP-PS/1AC/24DC/2.5", "AXL F DO16/3 XC 2F", "ASDFDDCL21EDFG"]
    
    strs.forEach(str => {
      console.log(str.match(regex))
    })

    Regex Demo

    【讨论】:

    • 你是怎么拍出这张漂亮的照片的?
    • 它适用于第一个输出问题。我现在没有得到 STEP-PS/1A 和 C/24DC/2.5 ,而是得到 STEP-PS/1AC/ 和 24DC/2.5 。太完美了这段代码用词,只是不要忘记添加“/g”,否则他会在第一次匹配后停止javascript match(/.{1,10}(?:[^\s\/]+?[\s\/])?/g) 现在问题是对于第二个输出问题我仍然得到一个空白输出。
    • @LukaAUDE 我添加了一个 sn-p 来显示它将返回什么输出,我不明白你得到空输出是什么意思?你能详细说明一下吗
    • 这是我的错,我不知道为什么我在输入的末尾添加了这样的空格:“AXL F DO16/3 XC 2F”所以我得到了第三个输出与这个空格。现在一切都很好,工作正常,非常感谢,祝你有美好的一天
    【解决方案2】:

    您可以根据您在 JavaScript 中的要求,将 split() 与 join() 一起使用,如下所示。

    var test ="STEP-PS/1AC/24DC/2.5 hh kk ll";
    var res = test.split('/').join('/ ').split(' ').join(' ');
    $('#msg').html(res)
    

    试一试, https://playcode.io/

    如果您需要任何具体帮助。请告诉我。 谢谢,

    【讨论】:

    • 谢谢,但它有点适用于以下代码 javascript var res = str.match(/.{1,10}(?:[^\s\/]+?[\s\/])?/g) ; 我测试了你的代码,但我无法定义输出的最大大小,例如与 javascript {1,10} 匹配
    猜你喜欢
    • 2018-09-24
    • 2021-10-14
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多