我怎样才能用破折号大写名字 - ,撇号'还是空间?

时间:2018-03-01 15:39:59

标签: javascript

我有以下代码可以很好地将输入的数据转换为" Firstname"我们的数据注册软件应用程序中的字段为大写,并将转换后的值返回给应用程序。

但是,它并没有使用" - ","'""或其中的空间,例如Anne-Marie,Jean Jacques,O'Brian。有人可以帮我添加几行代码来处理这些名称类型,以及保留我的原始代码,该代码适用于没有这些字符的标准名称吗?这是我的代码。



var tc_event = changeValue();

function changeValue() {
    // Parse the JSON string for script information.
    var tcInfo = JSON.parse(TC_Info);
    /* FROM ENGINEERING: The “TC_Info” variable contains the user id and IP address of the user running the script. 
     * We have at least one customer that wanted that information */
    var userId = tcInfo.userId;
    var ipAddress = tcInfo.ipAddress;

    // Parse the JSON string for fields and properties.
    var tcData = JSON.parse(TC_Event);
    // The following several lines of code loops over the workflow fields passed in to the script and saves references to the fields named “Lastname” and “LastnameUppercase”
    var Lastname, LastnameUppercase, Firstname, Firstname1stUppercase;
    // Iterate through parsed JSON.
    for (var index in tcData) {
        // Fetch each field i.e each key/value pair.
        var field = tcData[index];
        // Find the fields to process.
        if (field.name === 'Lastname') {
            Lastname = field;
        } else if (field.name === 'LastnameUppercase') {
            LastnameUppercase = field;
        } else if (field.name === 'Firstname') {
            Firstname = field;
        } else if (field.name === 'Firstname1stUppercase') {
            Firstname1stUppercase = field;
        } else if (field.name === 'PersNr') {
            PersNr = field;
        } else if (field.name === 'TikNr') {
            TikNr = field;
        }
    }

    // Were the fields found? If so, proceed.
    if (Lastname && LastnameUppercase && Firstname && Firstname1stUppercase && PersNr && TikNr) {

        // This line of code states the LastnameUppercase field value will be the Lastname field value in uppercase
        LastnameUppercase.value = Lastname.value.toUpperCase();

        Firstname1stUppercase.value = Firstname.value.charAt(0).toUpperCase() + Firstname.value.slice(1);

        var strLtr = PersNr.value.substring(0, 2);
        var strNum = PersNr.value.substring(2, 6);
        if (strLtr === '00') {
            strLtr = 'A';
        } else if (strLtr === '01') {
            strLtr = 'M';
        } else if (strLtr === '31') {
            strLtr = 'B';
        } else if (strLtr === '71') {
            strLtr = 'F';
        }

        TikNr.value = strLtr + strNum;
    }

    // Return the updated fields and properties.
    return JSON.stringify(tcData);
}




4 个答案:

答案 0 :(得分:0)

这将使不包含符号的firstName和执行以下操作的firstName大写:

{{1}}

答案 1 :(得分:0)

我成功使用了这个功能:

capitalName = capitalizeName(lowerCaseName)

调用函数:

target

答案 2 :(得分:0)

看起来你应该改变

Firstname1stUppercase.value = Firstname.value.charAt(0).toUpperCase() + Firstname.value.slice(1);

var delimiter = ''; //char value

if(Firstname.value.indexOf(' ') != -1){ //name has a space
  delimiter = ' ';
}else if(Firstname.value.indexOf('-') != -1){ //name has -
  delimiter = '-';
}else if(Firstname.value.indexOf('\'') != -1){ //name has a '
  delimiter = '\'';
}

Firstname1stUppercase.value = Firstname.split(delimeter).map(function(val) {
  return val.charAt(0).toUpperCase() + val.slice(1);
}).join(delimeter);

最后一行是你正在做的,但为任何分隔字符写的是空格,撇号或连字符。

答案 3 :(得分:0)

您可以按非字母字母分割,如下所示:

function myUpperCase(input) {
    var parts = input.split(/[^A-Za-z]/);
    var output = parts[0];
    for (var i = 1; i < parts.length; i++) {
        if (parts[i].length) parts[i] = parts[i][0].toUpperCase() + parts[i].substring(1);
        output += input[output.length] + parts[i];
    }
    return output;
}

受到启发:[class.access.spec] paragraph 5

现在,让我们实现您需要的功能:

T dummy = T();
return T;