如何使用replace替换字符串中的所有匹配字符?(How to replace all the matched characters in a string using replace?)
我使用了一种方法来格式化Google Apps脚本中的日期,以便它只读取
MMM dd, yyyy
。 我试图用“”替换日期字符串中的所有“ - ”,但使用替换方法仅替换字符串中的第一个“ - ”,其余部分都没有。 任何想法,为什么这是? 我怎样才能取代我的字符串中的所有“ - ”?这是我的代码:
function formatDate() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var dataSheet = ss.getSheets()[0]; var templateSheet = ss.getSheets()[1]; var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 9); var data = dataRange.getValues(); var startRow = 2; // First row of data to process var objects = getRowsData(dataSheet, dataRange); //Format date in column D for(var k=0; k<objects.length; k++){ var column = data[k]; var DateCell = column[4]; var emailSent = column[8]; var column = data[k]; var DateCell = column[4]; var date = new Date(DateCell).toLocaleDateString('en-US',{ day : 'numeric', month : 'short', year : 'numeric' }).split("").join("-").replace(/-/g, ""); var Date1 = dataSheet.getRange(startRow + k, 5); var Date2 = dataSheet.getRange(startRow + k, 6); Date1.setValue(date); Date2.setValue(date); } }
I have a method I am using to format the date in a Google Apps Script so that it just reads
MMM dd, yyyy
. I am trying to replace all the "-"s in my date string with "" but using the replace method only replaces the first "-" of the string and none of the rest. Any thoughts as to why that is? How can I get it to replace all the "-" in my string?Here is my code:
function formatDate() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var dataSheet = ss.getSheets()[0]; var templateSheet = ss.getSheets()[1]; var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 9); var data = dataRange.getValues(); var startRow = 2; // First row of data to process var objects = getRowsData(dataSheet, dataRange); //Format date in column D for(var k=0; k<objects.length; k++){ var column = data[k]; var DateCell = column[4]; var emailSent = column[8]; var column = data[k]; var DateCell = column[4]; var date = new Date(DateCell).toLocaleDateString('en-US',{ day : 'numeric', month : 'short', year : 'numeric' }).split("").join("-").replace(/-/g, ""); var Date1 = dataSheet.getRange(startRow + k, 5); var Date2 = dataSheet.getRange(startRow + k, 6); Date1.setValue(date); Date2.setValue(date); } }
原文:https://stackoverflow.com/questions/43462069
最满意答案
您可以使用
FirstOrDefault()
来选择符合特定条件的第一个项目,如果没有这样的项目,则选择null
。var firstNotExpired = fruits.OrderBy(f => f.time) .FirstOrDefault(f => !(f.status == "Expired" || f.status == "Cancelled"));
这很好,简洁,但效率低下,因为它需要对整个列表进行排序。 这更有效率:
var firstNotExpired = fruits.Where(f => !(f.status == "Expired" || f.status == "Cancelled")) .OrderBy(f => f.time) .FirstOrDefault();
You can use
FirstOrDefault()
to select the first item that meets certain criteria, ornull
if there is no such item.var firstNotExpired = fruits.OrderBy(f => f.time) .FirstOrDefault(f => !(f.status == "Expired" || f.status == "Cancelled"));
That's nice and concise, but inefficient because it requires sorting the whole list. This is more efficient:
var firstNotExpired = fruits.Where(f => !(f.status == "Expired" || f.status == "Cancelled")) .OrderBy(f => f.time) .FirstOrDefault();
相关问答
更多-
简单的方法是一个子查询: SELECT users.username, users.id_user, ( select friends.name from friends where (users.id_user = friends.id_user) ORDER BY friends.meet_date desc LIMIT 1 ) as friend_name, ( select friends.meet_dat ...
-
ORDER BY col_A, col_B SQLite网站有解释SQLite支持的SQL语法的语法图 。 ORDER BY col_A, col_B The SQLite website has syntax diagrams explaining the SQL grammar supported by SQLite.
-
Android应用内结算。(Android In-App Billing. Cancelled subscription is active even after expiration date)[2021-12-20]
你可以尝试这个。 purchase.getPurchaseState() // 0 (purchased), 1 (canceled)- 2 (refunded). you may try this one. purchase.getPurchaseState() // 0 (purchased), 1 (canceled)- 2 (refunded). -
您可以使用FirstOrDefault()来选择符合特定条件的第一个项目,如果没有这样的项目,则选择null 。 var firstNotExpired = fruits.OrderBy(f => f.time) .FirstOrDefault(f => !(f.status == "Expired" || f.status == "Cancelle ...
-
尝试这个 ;with cte as ( select *, row_number() over (partition by column1, column2 order by column3) rnk from #tmp ) select * from cte where rnk = 1 order by column3; SQL DEMO HERE Try this ;with cte as ( select *, row_number() ...
-
有序字典和排序(Ordered Dictionary and Sorting)[2022-10-11]
这是更正后的版本: import csv from collections import OrderedDict from datetime import datetime with open('TSE_sample_data.csv', 'rb') as csvIn: reader = csv.DictReader(csvIn) words = [] dates = [] for row in reader: #convert from UTC to ... -
假设您的日期在C列中,那么应该这样做。 调整只是我们比较和处理缺失日期的日期。 为了便于阅读,我也在讨论一些名称的情况。 function DeleteOldEntries() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Live Events");//assumes Live Events is the name of the sheet var datarange = sheet.get ...
-
列“expired_date”的类型为date,但表达式的类型为text(column “expired_date” is of type date but expression is of type text)[2022-05-31]
to_char将日期转换为格式化字符串。 你可以把它作为日期投射。 但更新声明也可以简化为以下内容: update tb_agent set expired_date = (register_date + interval '1 year' - interval '1 day')::date where agent_id in (46,47,62) to_char converts the date to a formatted string. you can cast it instead as a ... -
您可以使用子查询加入表,该子查询使用LEFT JOIN 获取每个Itemname的最旧EXPIRATIONDATE ,以便您可以测试记录是否是每个Itemname的最旧记录。 SELECT a.ItemName, a.Serials, a.EXPIRATIONDATE, IF(b.Itemname IS NULL, NULL, a.SO_QTY) SO_QTY FROM TableA a LEFT JOIN ( ...
-
我不认为有一种预先编写的方法可以做你想做的事情,但编写实用程序方法很简单。 话虽如此,如果myDate介于3:00:00.001和3:59:59.999之间,你的代码很接近但无法正常工作(我假设你希望它在第二天返回该事件) -你需要将不太重要的字段清零: public static Date getNextTime(Date base, int hourOfDay) { Calendar then = Calendar.getInstance(); then.setTime(base); ...