C#替换字符串的一部分
本文关键字:一部分 字符串 替换 | 更新日期: 2023-09-27 18:27:09
如何替换具有潜在未知起始索引的字符串的一部分。例如,如果我有以下字符串:
"<sometexthere width='200'>"
"<sometexthere tile='test' width='345'>"
我希望替换宽度attibute值,该值可能具有未知值,并且如前所述,具有未知的起始索引。
我知道我必须以某种方式将其建立在以下部分的基础上,这是不变的,我只是不太明白如何实现这一点。
width='
到目前为止,你已经得到了七个答案,告诉你做错事不要使用正则表达式来完成解析器的工作我假设你的字符串是一大块标记。假设它是HTML。正则表达式与有什么关系
<html>
<script>
var width='100';
</script>
<blah width =
'200'>
... and so on ...
我愿意打赌,它会取代JScript代码,但它不应该这样做,也不会取代blah标记的属性——在属性中有空格是完全合法的。
如果必须解析标记语言,则解析标记语言。给自己找一个解析器并使用它;这就是解析器的作用。
看看Regex类,你可以搜索属性的内容,并用这个类重新定位值。
即兴Regex.更换可能会奏效:
var newString = Regex.Replace(@".*width=''d'",string.Foramt("width='{0}'",newValue));
using System.Text.RegularExpressions;
Regex reg = new Regex(@"width=''d*'");
string newString = reg.Replace(oldString,"width='325'");
如果在新宽度字段中放入一个介于"之间的数字,这将返回一个具有新宽度的新字符串。
使用正则表达式
Regex regex = new Regex(@"'b(width)'b's*='s*'d+'");
其中'b
表示您希望匹配整个单词,'s*
允许零个或任意数量的空白字符,'d+
允许一个或多个数字占位符。要替换数值,您可以使用:
int nRepValue = 400;
string strYourXML = "<sometexthere width='200'>";
// Does the string contain the width?
string strNewString = String.Empty;
Match match = regex.Match(strYourXML);
if (match.Success)
strNewString =
regex.Replace(strYourXML, String.Format("match='{0}'", nRepValue.ToString()));
else
// Do something else...
希望这能有所帮助。
您可以使用正则表达式(RegEx)查找并替换"width="之后的所有单引号文本。
您可以使用正则表达式,如(?<=width=')('d+)
示例:
var replaced = Regex.Replace("<sometexthere width='200'>", "(?<=width=')(''d+)", "123");"
replaced
现在是:<sometexthere width='123'>
我会使用Regex
用123456
替换宽度值。
string aString = "<sometexthere tile='test' width='345'>";
Regex regex = new Regex("(?<part1>.*width=')(?<part2>''d+)(?<part3>'.*)");
var replacedString = regex.Replace(aString, "${part1}123456${part3}");
使用正则表达式来实现这一点:
using System.Text.RegularExpressions;
...
string yourString = "<sometexthere width='200'>";
// updates width value to 300
yourString = Regex.Replace(yourString , "width='[^']+'", width='300');
// replaces width value with height value of 450
yourString = Regex.Replace(yourString , "width='[^']+'", height='450');