我最近開始使用 Apps Script 來自動化 Google 表格中的一些流程。
我只需要在括號內的數字之間添加“/”。
例如“123(123)”到“123(1/2/3)”
我玩過 textFinder 但沒有運氣。
uj5u.com熱心網友回復:
我不太擅長正則運算式。一些專家可能可以一行完成,但這會起作用。
function testSlash() {
addSlash("123(123)456(456)");
addSlash("(123)123(456)456");
addSlash("(123)(123)456(456)(789)");
}
function addSlash(a) {
try {
let b = a.match(/(\(\d{1,})/g);
let d = [];
b.forEach( c => {
let e = c.match(/\d/g);
let f = "";
e.forEach( g => f = f g "/" );
f = "(" f.slice(0,-1);
d.push(f);
}
);
// now let rebuild the string
b.forEach( (c,i) => a = a.replace(c,d[i]) );
console.log(a);
}
catch(err) {
console.log(err);
}
}
6:49:56 AM Notice Execution started
6:49:58 AM Info 123(1/2/3)456(4/5/6)
6:49:58 AM Info (1/2/3)123(4/5/6)456
6:49:58 AM Info (1/2/3)(1/2/3)456(4/5/6)(7/8/9)
6:49:57 AM Notice Execution completed
uj5u.com熱心網友回復:
嘗試String.prototype.replace()使用 afunction作為替代函式
var str = '123(123)';
var replaced = str.replace( /\((. ?)\)/g, function( match, group1 ){
return '(' group1.split( '' ).join( '/' ) ')';
} );
console.log( replaced );
正則解釋:
\(匹配開括號
(. ?)在一個組中匹配盡可能少的非換行字符
\)匹配右括號
g全域標志,允許多個匹配
group1.split( '' ).join( '/' )拆分陣列中第一組中的所有字符,并用 連接陣列/,因此“123”將變為“1/2/3”
uj5u.com熱心網友回復:
您可以使用 Apps 腳本函式在所選單元格中括號內的數字之間插入斜杠,并將該函式分配給選單項,以便您可以輕松地設定電子表格中值的格式。
將以下代碼粘貼到Extensions > Apps Script中,完全替換那里的樣板代碼,保存并關閉。然后重新加載電子表格。將有一個新的選單項,可讓您插入斜杠。首次運行時,系統會要求您授權該功能。
'use strict';
/* @OnlyCurrentDoc */
/**
* Simple trigger that runs each time the user opens
* the spreadsheet.
*
* @param {Object} e The onOpen() event object.
*/
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Format numbers')
.addItem('Add slashes between bracketed numbers', 'insertSlashes')
.addToUi();
}
function insertSlashes() {
const regex = /\((\d )\)/g;
const ss = SpreadsheetApp.getActive();
const range = ss.getActiveRange();
const values = range.getValues();
if (!values.flat().some(value => String(value).match(regex))) {
ss.toast('The selected cells do not contain bracketed numbers. Nothing to do.');
return;
}
const result = values.map(row => row.map(value =>
typeof value === 'string'
? insertSeparators_(value, regex, '/', '()')
: value
));
range.setValues(result);
ss.toast('Done.');
}
function insertSeparators_(string, regex, separator, brackets = ['', '']) {
return string.replace(regex, (_, string) =>
brackets[0] [...string].join(separator) brackets[1]
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/533995.html
標籤:谷歌应用脚本谷歌表格
