0

首先,如果这个问题已经得到回答,我真的很抱歉。我对脚本的所有事情都有非常基本的掌握,所以如果我已经在没有意识到的情况下遇到了我的问题的答案,我不会感到惊讶(因为它超出了我的想象)......

我有一个大型库存电子表格,我想按字母顺序排序,但是库存中的许多项目在我想排序的第一个主要词之前都有各种前缀。是否可以创建一个脚本,我可以指定一组在排序中应忽略的字符串或字符?在搜索涉及基于指定分隔符生成新列的答案时,我看到了很多建议,但我认为这种方法不适用于我,因为库存中的项目没有一致的前缀(或前缀)。当我尝试这个建议时,我想为每个项目排序的主要词是不同的列,具体取决于项目名称。希望这是有道理的......如果有人作为模板,甚至只是一个链接让我开始创建这样的脚本,

4

2 回答 2

1

我在下面这个例子中站在 Serge 的肩膀上,使用正则表达式来匹配样本中较大的单词(5 个或更多字母......你可以改变这个,但 {7,} 是最高的,它将匹配两个 Menthyl和丙氨酸。当然丁氧基碳...也可以匹配,因为它要长得多。):

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  
      }
于 2013-04-24T23:17:35.027 回答
0

您可以使用数组来执行此操作,这是一个示例,其中我按空格后的第一个字符降序排序(小写)。

您可以在排序函数中选择其他参数。

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]

如您所见,它按空格后的数字排序(降序)

于 2013-04-24T20:00:08.780 回答