You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何在提交输入值到数组前将其转为首字母大写其余小写

实现步骤
  • 首先封装一个名称格式化函数,实现「首字母大写、其余字母小写」的规则,同时兼容你正则中包含的波兰语特殊字符
  • 输入值先做格式化处理,再用格式化后的结果做重复校验、存入数组,彻底规避大小写不同导致的重复录入问题

工具函数封装

单单词名称格式化(适用普通场景)

输入jOHN输出John,输入żANNA输出Żanna,兼容特殊字符转换:

function formatName(name) {
  const trimmed = name.trim();
  if (!trimmed) return '';
  // 用toLocaleXXX方法保证波兰语特殊字符大小写转换正确
  return trimmed[0].toLocaleUpperCase() + trimmed.slice(1).toLocaleLowerCase();
}

多单词名称格式化(支持空格分隔的名称)

输入aDaM kOWalski输出Adam Kowalski,自动过滤连续空格:

function formatName(name) {
  return name.trim()
    .split(' ')
    .filter(word => word)
    .map(word => word[0].toLocaleUpperCase() + word.slice(1).toLocaleLowerCase())
    .join(' ');
}

修改后的完整业务代码

const nameInput = document.getElementById('inputName');
let nameListDisplay = document.getElementById('nameListDisplay');
let assignmentDisplay = document.getElementById('assignmentDisplay');
// 正则转为RegExp对象,匹配效率更高
const onlyLetters = /^[a-zżźćńłśąęóA-ZŻŹĆŃŁŚĄĘÓ ]+$/;

let namesList = [];
    
function addName() {
  const rawInput = nameInput.value;
  const formattedName = formatName(rawInput);
  // 先校验格式化后的内容合法性
  if (formattedName.match(onlyLetters)) {
    // 用格式化后的名称做重复校验,避免大小写不同导致的漏判
    if (namesList.includes(formattedName)) {
      console.log('error:名称已存在');
    } else {
      console.log('name added');
      // 直接存入格式化后的标准名称
      namesList.push(formattedName);
      nameInput.value = ''; 
      displayNames();
    }  
  } else {
    console.log('error:输入包含非法字符');
  }
};

内容的提问来源于stack exchange,提问作者BadControl Hypnos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:07