例如,我有一个字符串:如何检测字符串中的一系列字符?
"This is the ### example"
我想串的###
出上面的字符串的?
散列键的数量可能会有所不同,所以我想找出并替换###
模式,例如,001
例如。
任何人都可以帮忙吗?
例如,我有一个字符串:如何检测字符串中的一系列字符?
"This is the ### example"
我想串的###
出上面的字符串的?
散列键的数量可能会有所不同,所以我想找出并替换###
模式,例如,001
例如。
任何人都可以帮忙吗?
如果你想捕捉多个#
字符,那么你需要的正则表达式:
var myString = "This is #### the example";
var result = myString.replace(/#+/g, '');
如果你想删除的空间太大,你可以使用正则表达式/#+\s|\s#+|#+/
。
您需要为此调查“Regular Expressions”,或者如果您知道您感兴趣的字符的精确位置和长度,则可以使用String的.substring
方法。
你也可以做一个替代。我熟悉这个的C#版本,
string stringValue = "Thia is the ### example";
stringValue.Replace("###", "");
这将完全从上面的字符串中删除###。再次,你将不得不知道确切的字符串。
在JavaScript中,它是类似的 - 使用.replace
(使用小写r
)。所以:
var stringValue = "This is the ### example";
var replacedValue = stringValue.replace('###', '');
#键的数量不尽相同,它可能是1,或者可能是10个字符,而不仅仅是3.非常感谢:) – user1093037
只是随机的,但你可以在循环中进行替换,只需将'#'替换为''直到没有更多的哈希。但正则表达式的解决方案更好,我会同意你的情况。 – peter
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值将会中断。
太棒了!非常感谢。我怎样才能算出哈希密钥序列的长度?在这种情况下是4? – user1093037
正则表达式类通常允许您在字符串中查找正则表达式匹配,并将它们作为字符串数组返回给您。然后你可以计算字符串的长度。 – peter
像这样,如果你新建一个RegExp类并运行exec方法,你会收到一个字符串数组作为结果的一个或多个匹配项。 – peter