代码之家  ›  专栏  ›  技术社区  ›  Derek Adair

从逗号分隔的字符串中删除数字,同时正确删除逗号

  •  0
  • Derek Adair  · 技术社区  · 14 年前

    例如: 给了一个字符串…”1,2,3,4英寸

    我需要能够删除一个给定的数字和逗号后/前,这取决于匹配是否在字符串的末尾。

    删除(2)=“1,3,4”

    删除(4)=“1,2,3”

    另外,我正在使用JavaScript。

    4 回复  |  直到 6 年前
        1
  •  3
  •   Hatim Ranapurwala    6 年前

    如jttubs所示,一种简单的方法是使用split函数获取一个不带逗号的元素数组,从数组中删除所需元素,然后使用join函数重新生成字符串。

    对于类似这样的javascript,可能会工作:

    function remove(array,to_remove)
    {
      var elements=array.split(",");
      var remove_index=elements.indexOf(to_remove);
      elements.splice(remove_index,1);
      var result=elements.join(",");
      return result;
    }
    
    var string="1,2,3,4,5";
    var newstring = remove(string,"4"); // newstring will contain "1,2,3,5"
    document.write(newstring+"<br>");
    newstring = remove(string,"5"); 
    document.write(newstring+"<br>"); // will contain "1,2,3,4"
    

    如果有重复,比如说字符串是“1,2,2,4”,我说是“remove(2)”,那么您还需要考虑您想要的行为,它应该删除两个实例还是只删除第一个实例?此函数将只删除第一个实例。

        2
  •  2
  •   aschepler    14 年前

    只需使用多个替换。

    s/^$removed,//;
    s/,$removed$//;
    s/,$removed,/,/;
    

    这将比试图发明一个单一的替代品来处理所有这些情况更容易。

        3
  •  1
  •   jtdubs    14 年前
    string input = "1,2,3,4";
    List<string> parts = new List<string>(input.Split(new char[] { ',' }));
    parts.RemoveAt(2);
    string output = String.Join(",", parts);
    
        4
  •  0
  •   Toto    14 年前

    我不使用regex,而是执行如下操作:

    - split on comma
    - delete the right element
    - join with comma
    

    下面是一个Perl脚本,它可以完成以下工作:

    #!/usr/bin/perl
    use 5.10.1;
    use strict;
    use warnings;
    
    my $toremove = 5;
    my $string = "1,2,3,4,5";
    
    my @tmp = split/,/, $string;
    @tmp = grep{ $_ != $toremove }@tmp;
    $string =join',', @tmp;
    
    say $string;
    

    输出:

    1,2,3,4