代码之家  ›  专栏  ›  技术社区  ›  Jurion

用于在Typescript(或Javascript)中生成CSV文件的本地分隔符

  •  2
  • Jurion  · 技术社区  · 8 年前

    我正在寻找正确的方法来确定用户文化中的列表分隔符。 现在我正在使用以下代码:

    private static SetSeparator() {
        var list = ['a', 'b'];
        var s = list.toLocaleString();
        var sep = s[1];
        CSVGenerator.Delimiter = sep;
    }
    

    它有效,但看起来有点破旧。我想知道是否有一种有据可查的方法在Typescript(或JavaScript)中获取本地列表分隔符。

    我需要这些信息来在客户端正确生成CSV文件。 谢谢

    2 回复  |  直到 8 年前
        1
  •  2
  •   Community basarat    7 年前

    我认为你的答案中的解决方案可能会很好。这里有一个关于类似问题的问题/答案(查找当前语言环境的十进制分隔符)-接受的答案与您问题中的解决方案非常相似: https://stackoverflow.com/a/1308446/1063392

    如果您担心分隔符由多于1个字符组成(尽管我认为这是一个合理的假设),您可以让您的函数选择测试数组中两个字符之间的所有字符,而不是盲目地在 [1] :

    function SetSeparator() {
      //var list = ['a', 'b'];
      //var s = list.toLocaleString();
      
      // let's pretend the current separator is ||
      var s = 'a||b';
      
      var reg = /a(.*)b/;
      var sep = reg.exec(s)[1]
      document.writeln('The separator of the current locale is: "' + sep + '"');
    }
    
    SetSeparator();

    另一个(可能更好的)选项可能是删除 toLocaleString() 返回值-这将避免边缘情况 a b 是分离器的一部分:

    function SetSeparator() {
      //var list = ['a', 'b'];
      //var s = list.toLocaleString();
      
      // let's pretend the current separator is ab
      var s = 'aabb';
    
      var sep = s.substr(1, s.length - 2);
      document.writeln('The separator of the current locale is: "' + sep + '"');
    }
    
    SetSeparator();
        2
  •  0
  •   Mr.Wosch    2 年前

    好吧,这个线程有点老了,但是如果你可以更容易地使用本地分隔符,为什么还要使用“a”和“b”呢

    var sep=['','']。toLocaleString();//->','