2017-02-15 70 views
-3

我想用一個字符串搜索一個子字符串(該字符串包含一個或多個點)。 我想使用正則表達式來使用,但不適合我。如何搜索和刪除一個字符串包含在一個字符串中的小圓點與javascript

例如: 我的字符串是「MY FLEX L.L.C」或「MY FLEX L.L.C.」或「MY FLEX CO。」 和結果應該是這樣的「我的靈感」

任何人都可以告訴我一個最好的方法。謝謝

+0

使用替換str.replace;( 'CO。' 'L.L.C。') –

+0

@ÁlvaroTouzón這並不是他所要求的。 – Santi

+0

@Santi,我收到了,但有一些東西,我不能放棄,刪除的模式在哪裏,在他的例子中,有一些來自字符串開始的噪音以及他想要轉化的地方 –

回答

0

是的請注意,L.L.C. 。和CO是動態的,他們是在一個數組

這裏是我的代碼:

var needToRemoveWhenTyping = ["A NEW JERSEY NONPROFIT CORPORATION", "A NONPROFIT CORPORATION", "ASSOCIATION", "CLUB", "CO", "CO. ", "CO.", "COMMITTEE", "COMPANY ", "COMPANY", "CORP", "CORP. ", "CORP.", "CORPORATION ", "CORPORATION", "FOUNDATION", "FUND", "INC", "INC. ", "INC.", "INCORPORATED ", "INCORPORATED", "INSTITUTE", "LEAGUE", "LIMITED ", "LIMITED", "LTD", "LTD. ", "LTD.", "SERVICES", "SOCIETY", "SYNDICATE", "UNION"]; 

for (i = 0; i < needToRemoveWhenTyping.length; i++) { 
      reg = new RegExp('\\b' + needToRemoveWhenTyping[i] + '\\b', 'gi'); 

      if ($this.val().match(reg)) { 
       // If matched then replace 
       newCompName = $this.val().replace(reg, ''); 
       $this.val(newCompName); 
      } 
     } 
0

非正則表達式的解決方案:https://jsfiddle.net/4jwy58z1/1/

function removeWordsWithDots(str) { 
    var substrings = str.split(" "); //Break string into words 

    for (var i = 0; i < substrings.length; i++) { 
     if (substrings[i].indexOf(".") > -1) { 
      substrings.splice(i,1); //Remove word if it has a . 
     } 
    } 

    return substrings.join(" "); 
} 

用法:

var companyName = "My Business L.L.C."; 
companyName = removeWordsWithDots(companyName); 

console.log(companyName); 
//"My Business" 
0

你可以創建函數來查找帶有點的子字符串,然後將其從給定的字符串中刪除。這裏是正則表達式的解決方案:

function removeSubstringsWithDots(fullString) { 
    var result = fullString; 
    var substringsWithDots = fullString.split(' ').filter(function(str) { 
    return str.includes('.') === true; 
    }); 
    substringsWithDots.forEach(function(str) { 
     var regexp = new RegExp(str); 
     result = result.replace(regexp, ''); 
    }); 
    return result; 
}; 

並使用它:

var newString = removeSubstringsWithDots('some s.t.r.i.n.g'); 

檢查出來:https://jsfiddle.net/38p4aggf/

0
var needToRemoveWhenTyping = ["A NEW JERSEY NONPROFIT CORPORATION", "A NONPROFIT CORPORATION", "ASSOCIATION", "CLUB", "CO", "CO. ", "CO.", "COMMITTEE", "COMPANY ", "COMPANY", "CORP", "CORP. ", "CORP.", "CORPORATION ", "CORPORATION", "FOUNDATION", "FUND", "INC", "INC. ", "INC.", "INCORPORATED ", "INCORPORATED", "INSTITUTE", "LEAGUE", "LIMITED ", "LIMITED", "LTD", "LTD. ", "LTD.", "SERVICES", "SOCIETY", "SYNDICATE", "UNION"]; 
// first we create a string with "|" pipe means "OR" in RegExp 
var rev = needToRemoveWhenTyping.reverse(); 
var stringtext = rev.join("|"); 
// then deal with dot "." we need to escape it otherwise our match will be inaccurate 
var formattedReg = stringtext.replace(/\./ig, "\\."); 
// next we got clean regEx object as following 
var reg = new RegExp(formattedReg,"ig"); 

// rest is your code no need to use for loop since we used "|" 
if ($this.val().match(reg)) { 
    // If matched then replace 
    newCompName = $this.val().replace(reg, ''); 
    // trim it in case whitespace 
    newCompName.trim(); 
    $this.val(newCompName); 
} 
相關問題