封装一个获取字符串刮号内的字符方法

最近做项目的时候有一处对接收的json数据做截取字符的逻辑,主要是获取关于字符串内部带有刮号()的字符内容,所以就简单的封装了下相关方法,该方法适合匹配以下几个符号:() 、[] 、<> 、《》、 “”、 ‘’、〔〕、{}、「」、〖〗等相关带有闭合的符号。具体应用方式如下:



    
        
        字符串截取刮号内部字符方法封装
    
    
    
    


aaa.png

还有一种更简单的方法,就是直接利用正则表达式的match方法来截取,简单粗暴,代码如下:



    
        
        字符串截取刮号内部字符方法封装
    
    
    
    


最近,聪明的网友又找到了其他几种快捷高效的方法,真是太感谢了!

// 第一种
function getMarkContent (str, start, end) {
  const arr = str.match(new RegExp(`\\${start}[^${end}]+\\${end}`, 'g'))
  return !arr ? [] : arr.map(item => item.replace(new RegExp(`\^\\${start}|\\${end}\$`, 'g'), ''))
}

// 第二种
function getMarkContent_Eg2 (str, start, end) {
  return str.toString().match(new RegExp(`(?<=\\${start})[^${end}]+(?=\\${end})`, 'g')) || []
}

const testStr = '0  (a)  12  ((((b)  3456  (c(() ';
const eg1 = getMarkContent(testStr, '(', ')');
const eg2 = getMarkContent_Eg2(testStr, 'a', ')');
console.log('eg1', eg1); // -> ["a", "(((b", "c(("]
console.log('eg2', eg2); // -> ["a", "(((b", "c(("]



//第三种:
function getMarkContent (str, start, end) {
  const arr = str.match(new RegExp(`\\${start}[^${end}]+\\${end}`, 'g'))
  return !arr ? [] : arr.map(item => item.replace(new RegExp(`\^\\${start}|\\${end}\$`, 'g'), ''))
}

const testStr = '0  (a)  12  ((((b)  3456  (c(() ';
console.log(getMarkContent(testStr, '(', ')')); // -> ["a", "(((b", "c(("]


你可能感兴趣的:(封装一个获取字符串刮号内的字符方法)