簡體   English   中英

js - 修剪功能僅適用於前導新行和制表符

[英]js - trim function only working on leading new lines and tabs

我正在從表中抓取一些數據並添加到數組中,修剪功能僅適用於前導\\n\\t並且仍然保留前導新行和制表符。

我環顧了 Stackoverflow 並使用了一些替換功能,但沒有結果。

const test = 'https://www.sec.gov/Archives/edgar/data/24741/000002474118000053/glw-20180930x10q.htm'

const request = require('request');

const cheerio = require('cheerio');

request(test, (error, res, html) => {
  if (!error && res.statusCode == 200) {
    // console.log(html)

    const $ = cheerio.load(html)

    const table = $("tr:contains('Cash and cash equivalents')")

    const items = []

    items.push(table.text().trim())

    console.log(items)

  }
})

我需要[cash and cash equivalents, 1903, ...]而我得到的是:

[ 'Cash and cash equivalents\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t1,903 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t4,317 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tCash and cash equivalents at beginning of period\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t4,317 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t5,291 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tCash and cash equivalents at end of period\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t1,903 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t3,865' ]

trim()函數只會從字符串的開頭和/或結尾刪除空格。 要刪除整個字符串中所有出現的\\n\\t空格,請考慮使用帶有以下正則表達式的replace()

someString.replace(/[\n|\t]/gm, '')

這基本上意味着“在整個字符串中全局(g)匹配多行(m)上的每個\\n或\\t字符,並用''替換匹配項”

 const inputString = 'Cash and cash equivalents\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t1,903 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t4,317 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tCash and cash equivalents at beginning of period\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t4,317 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t5,291 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tCash and cash equivalents at end of period\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t1,903 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t3,865' const outputString = inputString.replace(/[\\n|\\t]/gm, ''); console.log(outputString);

要將其與您的代碼集成,您可以執行以下操作:

items.push(table.text().replace(/[\n|\t]/gm, ''));

您正在根據您的請求獲得單字符串行響應

trim()適用於字符串並僅從其頭部和尾部刪除空字符

為了實現你想要的,你可以通過regex使用split()這個字符串/[\\n|\\t]/它測量any tab or any newline ,然后從空行和修剪元素中過濾這個數組

 let s = 'Cash and cash equivalents\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t1,903 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t4,317 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tCash and cash equivalents at beginning of period\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t4,317 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t5,291 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tCash and cash equivalents at end of period\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t1,903 \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t$\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t3,865'; s = s.split(/[\\n|\\t]/) .filter(el => el.trim().length) .map(el => el.trim()); console.log(s)

PS:對不起我的英語

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM