2011-12-12 66 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值將會中斷。

相關問題