#101 解析字串


  • 0

    const extractStr = (str) => /* TODO /
    {
    var re=/:\w
    ./g
    var arr=str.match(re)||[]
    for(var i=0;i<arr.length;i++){
    arr[i]=arr[i].replace(/:|./g,'')
    }
    return arr
    }


  • 0

    @张夜白 简洁!


  • 0

    @Neisun 不是的 因为有时候str.match的返回值会是null,是没有办法对null用map的


  • 0

    const extractStr = (str) => {
      if(typeof str !== 'string' || !str.length) return []
      let res = []
      str.replace(/:([^:.]*)\./g, function (a, b, c) {
        res.push(b)
      })
      return res
    }
    

  • 0

    const extractStr = (str) => /* TODO /(str.match(/:([^:.])./g) || []).map(item => item.replace(/[:.]/g, ''))
    这里正则竟然不支持 ?<= 和 ?= 好烦哦


  • 0

    const extractStr = (str) => {
      let ret = []
      let one = []
      for (let i = 0; i < str.length; i++) {
        if (one.length) {
          one.push(str[i])
          if (str[i] === ':') {
            one = []
            one.push(str[i])
          }
          if (str[i] === '.') {
            ret.push(one.slice(1, -1).join(''))
            one = []
          }
        } else {
          if (str[i] === ':') {
            one.push(str[i])
          }
        }
      }
      return ret
    }
    

  • 0

    const extractStr = (str) => {
    const result=str.match(/:+\w*./g)||[];
    console.log(result);
    return result.map(item=>item.replace(/[:.]/g,''));
    }


  • 0

    通过,不使用正则

    const extractStr = (str) =>
      str.split('.')
        .slice(0, -1)
        .filter(s => s.indexOf(':') !== -1)
        .map(s => s.split(':').pop());
    

  • 0

    const extractStr = (str) => /* TODO */{
      const results = []
      const splitByColon = str.split(':')
      splitByColon.shift()
      if(splitByColon.length < 1){
        return results
      }
      splitByColon
        .map( item => item.split('.') )
        .forEach( item => {
          if(item.length > 1) {
            results.push(item[0])
          }
         })
      return results
    }
    
    

  • 0

    let extractStr = (str) =>{
    const arr = str.match(/:[^:|^.]./g);
    if(!arr){
    return [];
    }
    const result = arr.map((raw)=>{
    return raw.replace(/:([^:|^.]
    )./g,'$1');
    })
    return result;
    }


登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待