te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - How to trim multiple characters? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to trim multiple characters? - Stack Overflow

programmeradmin3浏览0评论

I have a string as follows

const example = ' ( some string ()() here )   ';

If I trim the string with

example.trim()

it will give me the output: ( some string ()() here )

But I want the output some string ()() here. How to achieve that?

const example = ' ( some string ()() here )   ';
console.log(example.trim());

I have a string as follows

const example = ' ( some string ()() here )   ';

If I trim the string with

example.trim()

it will give me the output: ( some string ()() here )

But I want the output some string ()() here. How to achieve that?

const example = ' ( some string ()() here )   ';
console.log(example.trim());

Share Improve this question edited May 7, 2019 at 19:44 sertsedat asked Sep 27, 2018 at 8:10 sertsedatsertsedat 3,6001 gold badge27 silver badges45 bronze badges
Add a ment  | 

5 Answers 5

Reset to default 6

You can use a regex for leading and trailing space/brackets:

/^\s+\(\s+(.*)\s+\)\s+$/g

function grabText(str) { 
  return str.replace(/^\s+\(\s+(.*)\s+\)\s+$/g,"$1");
}

var strings = [
  '  ( some (string) here )   ',
  ' ( some string ()() here )   '];
  
strings.forEach(function(str) {
  console.log('>'+str+'<')
  console.log('>'+grabText(str)+'<')
  console.log('-------')
})

If the strings are optionally leading and/or trailing, you need to create some optional non-capturing groups

/^(?:\s+\(\s+?)?(.*?)(?:\s+\)\s+?)?$/g
/^ - from start
  (?:\s+\(\s+?)? - 0 or more non-capturing occurrences of  ' ( '
                (.*?) - this is the text we want
                     (?:\s+\)\s+?)? - 0 or more non-capturing occurrences of  ' ) '
                                  $/ - till end
                                    g - global flag is not really used here

function grabText(str) {
  return str.replace(/^(?:\s+\(\s+?)?(.*?)(?:\s+\)\s+?)?$/g, "$1");
}

strings = ['some (trailing) here )   ',
           ' ( some embedded () plus leading and trailing brakets here )   ',
           ' ( some leading and embedded ()() here'
];
strings.forEach(function(str) {
  console.log('>' + str + '<')
  console.log('>' + grabText(str) + '<')
  console.log('-------')
})

You can use the regex to get the matched string, The below regex, matches the first character followed by characters or whitespaces and ending with a alphanumberic character

const example = ' ( some (string) ()()here )   ';
console.log(example.match(/(\w[\w\s.(.*)]+)\w/g));

If you want to remove only the outer brackets after the trim you can use

var input = ' ( some string ()() here )   '.trim();
if( input.charAt(0) == '(' && input.charAt(input.length-1) == ')') {

var result = input.slice(1, -1).trim()
 console.log(result)
}

Last trim is optional which removes the space between ( and s also between e and )

You could use a recursive method and specify the number of times you wish to trim the string. This will also work with things other than round brackets, for instance, square brackets:

const example = ' ( some string ()() here )   ';
const exampleTwo = ' [  This, is [some] text    ]   ';

function trim_factor(str, times) {
  if(times == 0) {
    return str;
  }
  str = str.trim();
  return str.charAt(0) + trim_factor(str.substr(1, str.length-2), times-1) + str.charAt(str.length-1);
}

console.log(trim_factor(example, 2));
console.log(trim_factor(exampleTwo, 2));

  const str = ' ( some ( string ) here ) '.replace(/^\s+\(\s+(.*)\s+\)\s+$/g,'$1');
 console.log(str);

发布评论

评论列表(0)

  1. 暂无评论