2015-01-07 151 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);