首先,如果这个问题已经得到解答,我真的很抱歉。我对脚本的所有内容都有一个非常基本的把握,所以如果我在没有意识到的情况下已经找到了我的问题的答案(因为它超出了我的想法),我不会感到惊讶... ...
我有一个大型库存电子表格,我想按字母顺序排序,但清单中的许多项目在其第一个主要单词之前有各种前缀,我想排序。是否可以创建一个脚本,我可以指定一组在排序中应该忽略的字符串或字符?我在搜索包含基于指定分隔符生成新列的答案时看到了很多建议,但我不认为这种方法对我有用,因为库存中的项目没有一致的前缀(或前缀) )。当我尝试这个建议时,根据项目名称,我想为每个项目排序的主要单词是不同的列。希望这是有道理的......如果有人作为模板,甚至只是一个链接让我开始创建这样的脚本,我真的很感激。
答案 0 :(得分:1)
我站在Serge的肩膀上,下面是这个例子,使用正则表达式匹配样本中较大的单词(5个或更多字母......你可以改变这个,但{7,}是最高的匹配Menthyl和Alanine。当然Butoxycarbo ...也匹配,因为它更长。):
function test2(){
Logger.log(sort2( ['(1R,2S,5R)-(-)-Menthyl (S)-p-toluenesulfinate' ,'D-Alanine','Cis-3-(N-Tert-Butoxycarbonylamino)cyclopentanecarboxylic acid']));
}
function sort2(array){
array.sort(function(x,y){
var xp = x.match(/\b[A-z]{5,}\b.*$/m);
var yp = y.match(/\b[A-z]{5,}\b.*$/m);
return xp == yp ? 0 : xp > yp ? -1 : 1;// replace xp > yp with xp < yp for ascending order
});
return array
}
答案 1 :(得分:0)
您可以使用数组执行此操作,这是一个示例,我按空格(在lowerCase中)对第一个字符进行降序排序。
您可以在排序功能中选择其他参数。
function test(){
Logger.log(['xyz 123','wxy 234','vwx 345','abc 456',])
Logger.log(sort(['xyz 123','wxy 234','vwx 345','abc 456',]))
}
function sort(array){
array.sort(function(x,y){
var xp = x.toLowerCase().substring(x.indexOf(' ')+1);
var yp = y.toLowerCase().substring(y.indexOf(' ')+1);
return xp == yp ? 0 : xp > yp ? -1 : 1;// replace xp > yp with xp < yp for ascending order
});
return array
}
日志输出:
[xyz 123, wxy 234, vwx 345, abc 456]
[abc 456, vwx 345, wxy 234, xyz 123]
如您所见,它按空格(降序)后的数字排序