2017-02-15 71 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); 
} 
相关问题