4

有没有办法识别复合名称并正确大写第一个和第三个字符?

虽然使用 CSS 更改大小写是一项微不足道的任务,但在处理复合名称时,我还没有找到任何直接的解决方案。

想到的一件事是使用某种查找来识别 LeBare、麦当劳、麦克阿瑟等名称,然后应用一些逻辑来改变情况……任何知道其他可行解决方案的人可能是在那里,所以我不必重新发明轮子(可以这么说)?

注意:用户将直接在文本框中输入这些名称。不能保证用户不会输入 mcMinn 或 macArthur 等内容。话虽如此,我也注意到带有“Le”和“La”前缀的名称(这些名称可能有拉丁/西班牙根,我可以虽然错了)。

4

4 回答 4

0

在此过程中要记住的一件事是,您还可以使用“麦克阿瑟”的情况,它将是第一个和第四个字符。根据您从哪里提取数据(用户输入、数据库等),我会说按原样使用它可能是一种选择。但是,如果名称以全小写形式出现,那么您可能必须编译一个已知名称前缀列表并对其进行检查。我的观点是,除非名称全部以小写形式出现并显示给用户,否则我只会使用原始格式。

于 2013-02-13T21:48:40.473 回答
0

您不能仅使用 CSS 来实现。有几个“字母”jQuery 插件,例如http://letteringjs.com/。您可以根据 jQuery 中的名称放置自己的逻辑,并使用刻字库为每个字母设置样式

.target.char1, .target.char3 {
  text-transform:uppercase;
}
于 2013-02-13T21:49:07.717 回答
0

你使用这样的 Jquery。

$("#LastName").keyup(function () {
var last_name = $("#LastName").val();
var op = last_name.substr(0, 2);
if (op == "mc" || op == "Mc" || op == "MC") {
    $("#LastName").val("Mc" + (last_name.charAt(2).toUpperCase()) + last_name.substr(3).toLowerCase());
} else {
    $("#LastName").val(last_name.charAt(0).toUpperCase() + last_name.substr(1).toLowerCase());
}});
于 2022-02-28T13:55:18.380 回答
0

您可以在 javascript 中使用 index 循环:

var inputValue = "mcminn";

var transformedInput = '';

if(inputValue){
    for(var i=0; i<inputValue.length; i++){
    if(i===0 || i=== 2){
        transformedInput += inputValue.charAt(i).toUpperCase();
        } else {
            transformedInput += inputValue.charAt(i).toLowerCase();
    }
  }
}

console.log(transformedInput);

于 2022-02-28T14:01:04.513 回答