![](/img/trans.png)
[英]How to trim spaces and new lines from start and end and replace multiple new lines and wide spaces with single in 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.