列出逗号和“和” - 分隔(Make a list comma and "and"-separated)

其他开发 IT屋
问 题

You have strings with a separator character (a space or something else) like the following:

"1 2 3"
"1 2"
"1"

What is the best/elegant way in Javascript to format them in the following way?

"1, 2 and 3"
"1 and 2"
"1"

Must works for any number of elements >= 1

解决方案

A basic solution :

function format(input, separator) {
    if (!input) return input;
    input = input.split(separator || ' ');
    if (input.length === 1) return input[0];
    return input.slice(0, -1).join(', ') + ' and ' + input.pop();
}

This one sticks to your own approach (trailing separator) :

function format(input, separator) {
    var save = input, pattern;
    if (!input) return input;
    pattern = '[^\\' + (separator || ' ') + ']+';
    input = input.match(new RegExp(pattern, 'g'));
    if (!input) return save;
    if (input.length === 1) return input[0];
    return input.slice(0, -1).join(', ') + ' and ' + input.pop();
}

Usage example :

format('1)))2(3)4))', ')'); // "1, 2(3 and 4"

本文地址:IT屋 » Make a list comma and "and"-separated

问 题



 “1 2 3”您的字符串中包含分隔符(空格或其他字符) 
“1 2”
“1”


什么是最好/优雅在Javascript中的方式来格式化他们在以下方式?

 “1,2和3”
“1和2 “
”1“


必须适用于任何数量的元素> = 1


解决方案



 函数格式(输入,分隔符){
if(!input)return input;
input = input.split(separator ||'');
if(input.length === 1)return input [0];
return input.slice(0,-1).join(',')+'and'+ input.pop();





这一个坚持你自己的方法(尾随分隔符):

函数格式(输入,分隔符){
var save = input,pattern;

  
if(!input)返回输入;
pattern ='[^ \\'+(separator ||'')+'] +';
input = input.match(new RegExp(pattern,'g'));
if(!input)return save;
if(input.length === 1)return input [0];
return input.slice(0,-1).join(',')+'and'+ input.pop();

code


用法示例:

  format('1)))2(3)4))',')'); //“1,2(3和4”

本文地址:IT屋 » 列出逗号和“和” - 分隔