我正在寻找“正确”的方法来确定用户文化中的列表分隔符。 现在我正在使用这段代码:
private static SetSeparator() {
var list = ['a', 'b'];
var s = list.toLocaleString();
var sep = s[1];
CSVGenerator.Delimiter = sep;
}
它有效,但似乎有点hacky。我想知道是否有文档化的方法来获取Typescript(或JavaScript)中的本地列表分隔符。
我需要此信息才能在客户端正确生成CSV文件。 感谢
答案 0 :(得分:2)
我认为你答案中的解决方案可能会得到最好的解决方案。这是关于类似问题的问题/答案(查找当前区域设置的小数分隔符) - 接受的答案与您问题中的解决方案非常相似: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();