Javascript - 在表格单元格中查找多个数值并将厘米转换为英寸

Posted

技术标签:

【中文标题】Javascript - 在表格单元格中查找多个数值并将厘米转换为英寸【英文标题】:Javascript - find multiple number values in table cell and convert from cm to inches 【发布时间】:2021-04-01 12:39:30 【问题描述】:

我有这个 html 表格:https://jsfiddle.net/wt8dnkor/

我尝试做的是遍历所有元素 - 所有表格单元格,查找是否有字符串“cm”,如果有,则将值从 cm 转换为英寸。

所以我写了这段代码:

var allDivTd = document.getElementById("sizeadviser_content").getElementsByTagName("TD");

for(var i = 0; i < allDivTd.length; i++)
    var td = allDivTd[i];
    if (td.innerText.includes("cm") === true) 
        //td.innerText = td.innerText+' in';
    

如您所见,我只想更改字符串包含“cm”的单元格。

如何从单元格中获取数值并使用 1 位小数将其转换为英寸?

问题是因为我不知道单元格中有多少个数值。它们的格式可以是20cm or 20-50cm or 20 - 50 cm or 20 | 50 cm ...等。

【问题讨论】:

【参考方案1】:

如果你需要一个非常快速的解决方案,你可以使用这样的东西

function setStr(str) 
  let digit = '';
  let newStr = ''; 
  for (let char of str) 

    if (!isNaN(char)) 
      digit += char;
     else 
      newStr +=  converter(digit)+ char;
      digit = '';
    
 
 return newStr.replace('cm', 'in');


function converter(s) 
  if (s) 
    return (parseInt(s)*0.393707).toString();
  
  return '';

或使用正则表达式

 function parseString(str) 
   var matcher = /\D+/;
   var list = str.split(matcher);
   list.forEach((item) => 
     if (item) 
       str = str.replace(item, (parseInt(item)*0.393707).toString()); 
      
   );
   return str.replace('cm', 'in');

【讨论】:

你的答案非常好,只是像“96 - 104 cm”这样的字符串会像“37.8-40.9 in”这样返回我......所以空格不存在 抱歉,您的代码不能很好地处理十进制值 你也需要节省空间吗?【参考方案2】:

这是一个适用于十进制值的版本:

for (var i = 0; i < allDivTd.length; i++) 
  var td = allDivTd[i];    
  if (td.innerText.includes("cm") === true) 

    new_td = td.innerText.replace('cm', '').replaceAll(' ', '');
    for (let char of new_td) 

      if (isNaN(char) && char != ".") 
        new_td = new_td.replace(char, ",").split(',');
        new_td.forEach(function(centim, index, myArray) 

          myArray[index] = (centim * 0.393701).toFixed(2);
        );

        new_td = new_td.toString().replace(',', ' - ') + ' in'

        td.innerText = new_td;
      
    

【讨论】:

【参考方案3】:

我认为你可以通过使用 split(/\D+/) 来使用正则表达式

检查我的例子

    function gtnmbrs () 
        var strng = '50 - 10 | 555 cm';
        var nonnmbrs = /\D+/;
        var rslt = strng.split(nonnmbrs);
        for (i=0; i<rslt.length; i++)    
       document.write("<p>"+rslt[i]*0.39370+" inch</p>");
       
<p>Convert to:</p>
    <input type="button" id="bt" value="Click it!" onclick="gtnmbrs()"/>

看看这个 sn-p 它可以帮助你只得到数字,然后将它从厘米转换为英寸

【讨论】:

抱歉,您的代码不能很好地处理十进制值

以上是关于Javascript - 在表格单元格中查找多个数值并将厘米转换为英寸的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图单元格中查找 UIView 的 x 位置

excel表格怎么从一个表格中去查找另一个表格的所有数据?

通过用户输入和 Javascript 更改特定表格单元格中的文本

Excel中查找某个单元格中的内容在另一个表格中的位置

如何使用 Javascript 函数从 id 获取表格单元格中的详细信息

查找哪个集合视图单元格链接到我的表格视图