2013-01-04 57 views
3

我的原始問題昨天回答瞭如何從字符串中分割出特定字符,然後刪除這兩個字符之間的內容。C#字符串分割 - 無結尾分隔符

我講到從這樣的字符串中刪除...

lg-109-1.ea-091-2.hd-180-1.hr-220-1 

我不知道,有時候我的角色我想分裂出來(在這種情況下它是高清和。和人力資源之間的一切,的。)

但是你看人力資源有沒有.所以它不是被刪除

這是使用代碼IM ...

public static string RemoveB(string s) { 
    s = Regex.Replace(s, @"hr.*?\.", ""); 
    s = Regex.Replace(s, @"hd.*?\.", ""); 
    return s; 
} 

有沒有人知道如何檢查hr是否有一個。,如果沒有,然後只是刪除它?

+1

年底只需使用一個可選的量詞''匹配0或1'.': - ?。?'@「小時* \。 ?「' –

+5

我準備好了你的問題3次,仍然不知道你想要什麼。是否立即在'hr'之後立即執行。你必須更具體 –

+0

s = Regex.Replace(s,@「hr。*?[。| $]」,「」); – RockOnGom

回答

2

你可以做

Regex.Replace(s, @"(hr|hd).*?(\.|$)", ""); 

$描述字符串

-3
public static string RemoveB(string s) { 
    s = s.Replace("hr.","$"); 
    s = s.Replace("hr",""); 
    s = s.Replace("$","hr."); 
    return s; 
} 
+0

它的作品...爲什麼-2? –

+0

Ardhian..how做你寫的工作..?你能解釋一下嗎?當我運行你的代碼時它會返回這個結果,它返回 'lg-109-1.ea-091-2.hd-180-1.-220-1'我會建議你在調試器中運行代碼結束或理解什麼OP要發佈的答案,顯然不工作.. – MethodMan

+0

這是很長的距離工作它甚至不接近。看到你的第一個和最後一個替換首先用* $ *替換* hr。*。然後,將* $ *替換回* hr。*,從而爲您提供**與**開始時完全相同的結果。所以你在這裏做的唯一的事情就是用空字符串替換* hr *,這並不是op所要求的。因此:-3 –

1

嘗試以匹配或者.或線的末端使用(\.|$),而不是僅僅\.。或者如果您知道hr始終是最後一個條目,則只需使用$而不是\.即可始終匹配該行的末尾。