更改 API 数据输出的区分大小写

Changing the case-sensitivity of API data output

我是 API 集成的新手。我最近将车辆 VIN 解码器 API 集成到我的应用程序中。 VIN 解码器来自 NHTSA(国家公路交通安全管理局)。用户输入车辆的 VIN 并选择提交后,有关该车辆的数据将显示在 table.

Make 数据始终以全大写显示。我想编辑此输出,以便每个单词的首字母仅大写。

例如:

当前输出如下:MERCEDES-BENZ、TOYOTA 或 NISSAN

我希望它显示为:Mercedes-Benz、Toyota 或 Nissan

有一个例外。宝马。我想让宝马全部大写。

知道如何在出现单个异常 (BMW) 的情况下更改数据的区分大小写吗?

这是我一直用于测试目的的 VIN。

这是我的代码:

<!DOCTYPE html>
<html>

<head>
<title>VIN Decoder API Test</title>

<style type="text/css">
input {width: 200px;}
.border {border:1px solid black}
</style>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
$(document).ready(function() {
  $("#submit_btn").click(function () {
  var val = $("#b12").val();
  
    $.ajax({
        url: "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/",
        type: "POST",
        data: { format: "json", data: val},
        dataType: "json",
        success: function(result)
        {
            $("#t1").text(result.Results[0].Manufacturer);
            $("#t2").text(result.Results[0].ModelYear);
            $("#t3").text(result.Results[0].Make);
            $("#t4").text(result.Results[0].Model);
            $("#t5").text(result.Results[0].BodyClass);
            $("#t6").text(result.Results[0].DisplacementL);
            $("#t7").text(result.Results[0].EngineCylinders);
            $("#t8").text(result.Results[0].EngineHP);


        },
        error: function(xhr, ajaxOptions, thrownError)
        {
            console.log(xhr.status);
            console.log(thrownError);
        }
    });
  })
});

function showResults(){
  document.getElementById("t1a").style.display = "block";
}
</script>

<script>

function hideHi() {
  document.getElementById("t1a").style.display = "none";
}
</script>

</head>

<body onload="hideHi()">

  <table align="center">
      <tr>
          <td align="center">
              <input type="text" id="b12" placeholder="Enter VIN" name="b12" maxlength="100"/>
          </td>
      </tr>
      <tr>
          <td align="center">
              <button id="submit_btn" onclick="showResults()">Submit</button>
          </td>
      </tr>
  </table>
  <br>
  <br>
  <div id="t1a">
  <table align="center">
    <tr>
      <td>Manufacturer:</td> <!--"Manufacturer"-->
      <td id="t1"></td>
    </tr>
    <tr>
      <td>Year:</td> <!--"ModelYear"-->
      <td id="t2"></td>
    </tr>
    <tr>
      <td>Make:</td> <!--"Make"-->
      <td id="t3"></td>
    </tr>
    <tr>
      <td>Model:</td> <!--"Model"-->
      <td id="t4"></td>
    </tr>
    <tr>
      <td>Body Style:</td> <!--"BodyClass"-->
      <td id="t5"></td>
    </tr>
    <tr>
      <td>Displacement:</td> <!--"DisplacementL"-->
      <td id="t6"></td>
    </tr>
    <tr>
      <td>Number of Cylinders:</td> <!--"EngineCylinders"-->
      <td id="t7"></td>
    </tr>
    <tr>
      <td>Horsepower:</td> <!--"EngineHP"-->
      <td id="t8"></td>
    </tr>
  </table>
</div>

</body>
</html>

过去,我创建了一个我想要转换的已知值的白名单查找(对象)。如果在查找中没有找到密钥,我会使用 lodash 或类似的东西来命名该值。

function formatManufacturer(manufacturer){
  const whitelist = {
    'BMW': 'BMW'
  }

  if(manufacturer in whitelist){
     return whitelist[manufacturer];
  } else {
     return titleCase(manufacturer) // defined elsewhere or in a library
  }
}

我会这样做:

var exclude = {'BMW':'BMW'};
function toTitleCase(str) {
  return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
}
function formatCarNames(carName){
 if(carName in exclude){
  return carName;
}else {
  return toTitleCase(carName);
}

在脚本中定义并使用此函数:

function titleCase(str, spliters = [' ', '-']) {

  str = (str || '').toString().toLowerCase();

  if(str === 'bmw') {
    return str.toUpperCase();
  }

  spliters.forEach(spliter => {
    str = str.split(spliter).map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
  });

  return str;

}

然后 ajax 成功调用

success: function(result)
    {
        $("#t1").text(titleCase(result.Results[0].Manufacturer));
        $("#t2").text(titleCase(result.Results[0].ModelYear));
        $("#t3").text(titleCase(result.Results[0].Make));
        $("#t4").text(titleCase(result.Results[0].Model));
        $("#t5").text(titleCase(result.Results[0].BodyClass));
        $("#t6").text(titleCase(result.Results[0].DisplacementL));
        $("#t7").text(titleCase(result.Results[0].EngineCylinders));
        $("#t8").text(titleCase(result.Results[0].EngineHP));


    }