2015-01-07 147 views
0

認爲我有以下字符串:如何替換部分字符串?

string str1 = "<tag tsdfg> some other random text"; 
string str2 = "<tag sdfgsdfgfsdg> some other random text"; 
string str3 = "<tag 1564> some other random text"; 

我想改變這些字符串

"<tag> some other random text" 
+11

'STR1 = STR2 = STR3 = 「」'? :) –

+1

嗯我給了一個壞例子:p – maartenvdv

+1

@SonerGönül實際上'str1 = str2 = str3 =「其他一些隨機文本」'爲了正確! :-D – Jcl

回答

3

使用正則表達式:

str1 = Regex.Replace(str1, @"\<tag.*?\>", "<tag>"); 

小提琴:

https://dotnetfiddle.net/LdokRn

+0

我認爲你需要'「\ 」'來阻止正則表達式被攻擊。否則這很好。 +1 –

+1

你是對的,在OP案例中,它不會被需要,但作爲一個通用的解決方案,是的。將編輯 – Jcl

1

您可以使用正則表達式替換標籤內的所有任意文本

Regex.Replace("<tag tsdfg> some random text", @"<(.*)?\s+(.*)?>", "<$1>"); 

這將有效地替換任何標籤末尾的空格後面的文本。

Try it out

+0

@SriramSakthivel是的,我意識到正則表達式是無效的,我發佈了答案後,我已經更新了一個將替換空白後標記內的所有內容。 – James

+0

這仍然不正確。請測試自己。 Op請求'其他一些隨機文本',但你的回答給出'其他一些隨機文本' –

+0

不是很正確,沒有 – Jcl

1

嘗試

str1.Replace((str1.Substring(str1.IndexOf("<"), str1.IndexOf(">"))), "<tag>"); 
0

,你可以這樣做:

str1="<tag>" + str1.Remove(0, str1.IndexOf(">") + 1); 

從索引0消除了> +1,然後將它添加到 「標籤」

+0

那沒有達到要求 –

+0

@JustinHarvey我編輯它爲什麼不呢? –

+0

他正在嘗試將其更改爲刪除標籤內的「tsdfg」。 –

1

如果<tag後,總是會有一個空白,那麼你可以使用Split()這樣:

string str1 = "<tag tsdfg> some other random text"; 
string values = str1.Split(' ')[0]+">"; 
0

你也可以做到這一點這樣:

string str = "<tag tsdfg> some other random text"; 

string newStr = new string(str.TakeWhile(c => !Char.IsWhiteSpace(c)) 
           .Concat(str.SkipWhile(c => c != '>')) 
           .ToArray()); 

Console.WriteLine(newStr); // "<tag> some other random text" 
0

讓我們把它至少一次不像不是拆卸或更換,但提取其他的解決方案; - ]

string str1 = "<tag tsdfg> some other random text"; 

Match match = Regex.Match(str1, @"\<(tag).+?\>(.+)"); 
string result = String.Format("<{0}>{1}", match.Groups[1].Value, match.Groups[2].Value); 
Console.WriteLine(result);