簡體   English   中英

進行簡單的搜索,而不管大小寫如何

[英]Do a simple seach regardless of upper an lower case

有人可以向我解釋一下,如何在javascript中完成這個簡單的代碼,而無需注意大小寫嗎?

if(res.search('em')!=-1){  unit='em'; res.replace(unit,'');}
if(res.search('vh')!=-1){  unit='vh'; res.replace(unit,'');}
if(res.search('px')!=-1){  unit='px'; res.replace(unit,'');}

毫無疑問,這就是我編寫的代碼。 很多代碼

if(res.search('Em')!=-1){  unit='Em'; res.replace(unit,'');}
if(res.search('eM')!=-1){  unit='eM'; res.replace(unit,'');}
if(res.search('EM')!=-1){  unit='EM'; res.replace(unit,'');}
...

我敢肯定有更好的方法!!

非常感謝。

您可以將正則表達式與replace一起replace ,並將找到的單元保存為replacer函數的副作用。 這將使您無需兩次搜索字符串即可替換單元:

 let res = "Value of 200Em etc." let unit let newRes = res.replace(/(em|vh|px)/i, (found) => {unit = found.toLowerCase(); return ''}) console.log("replaced:", newRes, "Found Unit:", unit) 

您可以使用toLowerCase() ,將所有字符串轉換為小寫並進行比較,

var tobereplaced = 'em';

if(res.search.toLowerCase(tobereplaced)> -1){   res.replace(tobereplaced,'');}

對於第一部分,您可以使用toLowerCase()

if(res.toLowerCase().search('em') != -1)

您可以在不區分大小寫的標志旁邊的正則表達式中使用替換。

/(em|vh|px)/i Mathces emvhpx

 function replaceUnit(input){ return input.replace(/(em|px|vh)/i ,'replaced') } console.log(replaceUnit('height: 20em')) console.log(replaceUnit('width:=20Em')) console.log(replaceUnit('border-radius: 2Px')) console.log(replaceUnit('unit=pX')) console.log(replaceUnit('max-height=20Vh')) 

您需要做的就是在測試字符串內容之前將其強制為小寫(或大寫):

if( res.toLowerCase().search('em') !== -1){ do(stuff); }

要處理替換res中的實際子字符串值,應執行以下操作:

let caseInsensitiveUnit = "em";
let unitLength;
let actualUnit;
let position = res.toLowerCase().search(caseInsensitiveUnit);
if(position > -1){ 
    unitLength = caseInsensitiveUnit.length; 
    actualUnit = res.substring(postion, position + unitLength);
    res.replace(actualUnit, "");
}

如果可以做出以下三個假設:

  1. 字符串始終以數字開頭
  2. 字符串始終以單位結尾
  3. 單位始終是兩個字符

然后它可能很簡單:

const str = '11.5px';
const unit = str.substr(-2); //=> 'px'
const value = parseFloat(str, 10); //=> 11.5

或具有功能:

const parse = str => ({unit: str.substr(-2), value: parseFloat(str, 10)});
const {unit, value} = parse('11.5px');
// unit='px', value=11.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM