第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript代碼提取帶有特定關(guān)鍵字的大括號中的值

javascript代碼提取帶有特定關(guān)鍵字的大括號中的值

慕姐4208626 2022-12-22 15:10:40
我在谷歌云存儲中有一組文本文件(新文件每 5 分鐘存儲一次[批處理])。我想做的是通過 Dataflow 將其放入 Google BigQuery。在數(shù)據(jù)流中,我們可以直接將云存儲中的文本文件導(dǎo)入到 Google BigQuery(在我的例子中,我想要批處理)。它需要一個 javascript 代碼來將 GCS 中的文本文件轉(zhuǎn)換為 bigquery 中的表。這是我的一個文本文件示例。我想編寫javascript 代碼來 選擇主題名稱是Bat并將花括號之間的值放入 Bigquery 表中。根據(jù)上面的示例,下面是必需的。(稍后將添加 BigQuery 模式)我真的是 javascript 的新手(實際上這是第一次),我想實現(xiàn)一個 javascript 函數(shù)來執(zhí)行此操作。我不知道在線選擇主題名稱 Bat**。以下是我嘗試過的。(如果這是錯誤的,請修復(fù))function transform(line) {const paramsPattern = /[^{\}]+(?=})/g;let new = line.match(paramsPattern);var values = new.split(',');var obj = new Object();obj.ID = values[0];obj.AGE = values[1];var jsonString = JSON.stringify(obj);return jsonString;}提前致謝 ?。。?
查看完整描述

2 回答

?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗 獲得超8個贊

如果涉及到可靠性、便利性和/或可維護(hù)性,人們應(yīng)該考慮一種更通用的方法,它確實減少了行/字符串列表,此外還通過組裝正確的正則表達(dá)式來考慮特定主題......

const fileData = `

  Topic:Cat [0] at offset:216712{"ID":55689534,"NAME":6}

  Topic:Cat [1] at offset:216719{"ID":55689524,"NAME":6}

    Topic : Bat [0] at offset:216716  {"CODE":94762151097,"AGE":32}  

  Topic:Cat [0] at offset:216713{"ID":55689524,"NAME":6}

  Topic:Bat [1] at offset:216723{"CODE":947080272531,"AGE":43}

  Topic:Cat [1] at offset:216738{"ID":55689525,"NAME":6}

`;

const dataItemList = fileData.split(/\n/);



function getTopicSpecificDataCaptureRegX(topic) {

// see also: [https://regex101.com/r/AD31R6/1/]


//return (/^\s*Topic\s*\:\s*Bat[^{]+(\{.*\})\s*$/);

//return (/^\s*Topic\s*\:\s*Cat[^{]+(\{.*\})\s*$/);

  return RegExp('^\\s*Topic\\s*\\:\\s*' + topic + '[^{]+(\\{.*\\})\\s*$');

}


function collectTopicSpecificData(collector, dataItem) {

  const result = dataItem.match(collector.regX);

  if (result !== null) {


    collector.list.push(JSON.parse(result[1]));

  }

  return collector;

}



console.log(

  '"Cat" specific data list : ',

  dataItemList.reduce(collectTopicSpecificData, {


    regX: getTopicSpecificDataCaptureRegX('Cat'),

    list: []


  }).list

);

console.log(

  '"Bat" specific data list : ',

  dataItemList.reduce(collectTopicSpecificData, {


    regX: getTopicSpecificDataCaptureRegX('Bat'),

    list: []


  }).list

);

.as-console-wrapper { min-height: 100%!important; top: 0; }


查看完整回答
反對 回復(fù) 2022-12-22
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗 獲得超10個贊

讓 new = line.match(paramsPattern);


您不應(yīng)該將其分配給變量 new ... new 是特殊的。


這是適用于您的示例的正則表達(dá)式:https ://regex101.com/r/tBHRIY/1

這是一個例子:


const testLine  = 'Topic:Bat [0] at offset:216812{"ID":51255125, "NAME":6}';


function transform(line) {

    const paramsPattern = /({[\s\S]+})/g;

    const match         = line.match( paramsPattern );


    if ( line.indexOf( 'Bat' ) === -1 )

        return null;


    if ( match === null )

        return null;


    // This will verify that the json is valid ( it will throw ) but you can skip this and return match[0] directly if you are sure it is valid

    return JSON.stringify( JSON.parse( match[0] ) );

}


console.log( transform( testLine ) );


編輯:抱歉,我錯過了檢查 BAT,已添加


查看完整回答
反對 回復(fù) 2022-12-22
  • 2 回答
  • 0 關(guān)注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號