Regex 使用谷歌应用程序脚本将电话号码从1XXXXXXXXX格式化为xxx XXXXX
我正在尝试修改下面的谷歌应用程序脚本,将手机号码从 11位到10位,带连字符。因此,脚本需要删除前导1并添加连字符 例如:19734776262到973-477-6262 以下脚本的作用正好相反。发现Regex 使用谷歌应用程序脚本将电话号码从1XXXXXXXXX格式化为xxx XXXXX,regex,google-apps-script,google-sheets,google-sheets-formula,array-formulas,Regex,Google Apps Script,Google Sheets,Google Sheets Formula,Array Formulas,我正在尝试修改下面的谷歌应用程序脚本,将手机号码从 11位到10位,带连字符。因此,脚本需要删除前导1并添加连字符 例如:19734776262到973-477-6262 以下脚本的作用正好相反。发现 如果公式解决方案对您有效,以下是我的方法,否则请原谅我的误解: =CONCATENATE(left(right(A1,len(A1)-1),3),"-",mid(right(A1,len(A1)-1),4,3),"-",right(A1,4)) 如前所述,
如果公式解决方案对您有效,以下是我的方法,否则请原谅我的误解:
=CONCATENATE(left(right(A1,len(A1)-1),3),"-",mid(right(A1,len(A1)-1),4,3),"-",right(A1,4))
如前所述,“如果公式解决方案对您有效,我的方法是”
要将上述公式应用于一系列单元格,请使用:
=ArrayFormula(IF(I1:I="",,REGEXEXTRACT(TEXT(I1:I,"0-000-000-0000"),"-(.*)")))
(请根据您的需要调整范围)
使用的功能:
以下模式REGEXREPLACE
-前导的(?:^1)?
(可选)-非捕获组1
-恰好出现3次\d{3}
igitd
-捕获组(…)
$1
- 替换为
-前导连字符-$1
和捕获的组-
获取最右边的12个字符RIGHT
它只是从输入中获取子字符串块并将它们连接在一起。您知道如何从字符串中获取子字符串吗?完美的解决方案!这比我的好。我如何修改你的原始脚本来应用这个公式?我面临的挑战是,数据是通过表单提交来的,因此我不想添加列来格式化数据。这有意义吗?@DataRobot确实有意义。但是,如果您尝试编写脚本以实现所需的结果(通过编辑您的问题),我可能能够帮助您。如果你不知道,考虑做“CODelABS”,谢谢。我在原始帖子中包含的代码实际上是由您编写的。:)@DataRobot似乎是Tanaike写的而不是我。
=REGEXEXTRACT(TEXT(I1,"0-000-000-0000"),"-(.*)")
=ArrayFormula(IF(I1:I="",,REGEXEXTRACT(TEXT(I1:I,"0-000-000-0000"),"-(.*)")))
=RIGHT(REGEXREPLACE(A2,"(?:^1)?(\d{3})","-$1"),12)
function myFunction()
{
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const range = sheet.getRange('D:D'); // Column "D"
const values = range.getValues();
const converted = values.map(([v]) => {
if (/^\d{11}$/.test(v))
{
let sv = v.toString();
return [[sv.substr(1, 3), sv.substr(4, 3), sv.substr(7)].join('-')];
}
return [v];
});
range.setValues(converted);
}