2011-12-12 90 views
-2

例如,我有一个字符串:如何检测字符串中的一系列字符?

"This is the ### example" 

我想串的###出上面的字符串的?

散列键的数量可能会有所不同,所以我想找出并替换###模式,例如,001例如。

任何人都可以帮忙吗?

回答

0

如果你想捕捉多个#字符,那么你需要的正则表达式:

var myString = "This is #### the example"; 
var result = myString.replace(/#+/g, ''); 

如果你想删除的空间太大,你可以使用正则表达式/#+\s|\s#+|#+/

+0

太棒了!非常感谢。我怎样才能算出哈希密钥序列的长度?在这种情况下是4? – user1093037

+0

正则表达式类通常允许您在字符串中查找正则表达式匹配,并将它们作为字符串数组返回给您。然后你可以计算字符串的长度。 – peter

+0

像这样,如果你新建一个RegExp类并运行exec方法,你会收到一个字符串数组作为结果的一个或多个匹配项。 – peter

0

如果字符串的其余部分是已知的,只是得到你所需要的零件:

var example = str.substr(12, str.length - 20); 
+0

就是这样,这个C#不能编译。 – Ryan

+0

@minitech:当我看到这个问题是关于Javascript的时候,我编辑了它。 – Guffa

3

你也可以做一个替代。我熟悉这个的C#版本,

string stringValue = "Thia is the ### example"; 
stringValue.Replace("###", ""); 

这将完全从上面的字符串中删除###。再次,你将不得不知道确切的字符串。

在JavaScript中,它是类似的 - 使用.replace(使用小写r)。所以:

var stringValue = "This is the ### example"; 
var replacedValue = stringValue.replace('###', ''); 
+0

#键的数量不尽相同,它可能是1,或者可能是10个字符,而不仅仅是3.非常感谢:) – user1093037

+0

只是随机的,但你可以在循环中进行替换,只需将'#'替换为''直到没有更多的哈希。但正则表达式的解决方案更好,我会同意你的情况。 – peter

0

javascript匹配方法将返回匹配正则表达式的子字符串数组。您可以使用它来确定要替换的匹配字符的数量。假设你想用一个随机数字来代替每个井号,你可以使用这样的代码:

var exampleStr = "This is the ### example"; 
var swapThese = exampleStr.match(/#/g); 
if (swapThese) { 
    for (var i=0;i<swapThese.length;i++) { 
     var swapThis = new RegExp(swapThese[i]); 
     exampleStr = exampleStr.replace(swapThis,Math.floor(Math.random()*9)); 
    } 
} 
alert(exampleStr); // or whatever you want to do with it 

注意,代码只循环数组的长度,如果它的存在:if (swapThese) {

此检查是必要的因为如果匹配方法找不到匹配项,它将返回空值而不是空数组。尝试迭代null值将会中断。