C#语言 如何替换指定格式文本内容

类似这样的一个字符串~{Yx[1,1]|(Yx[11,3]&Yx[22,4])|Yx[24,16]}每一个Yx[*,*]可查询数据库获取对应的中文描述(查询算法我知道)如... 类似这样的一个字符串
~{Yx[1,1]|(Yx[11,3]&Yx[22,4])|Yx[24,16]}
每一个Yx[*,*]可查询数据库获取对应的中文描述(查询算法我知道)
如何将查到的中文描述将原来的Yx[*,*]替换掉,但不改变其他符号的位置。
展开
 我来答
浪客男爵
2014-09-05 · TA获得超过165个赞
知道答主
回答量:21
采纳率:0%
帮助的人:10.7万
展开全部
解决方案一:利用string.replace(sting,string)方法。首先通过string.substring()、string.indexof()、string.lastiindexof()方法获取string.replace(sting,string)中需要替换的原内容(就是Yx[*,*]),然后替换。
解决方案二:首先string.split()劈分成字符串数组,然后一个一个替换,最后将替换完的字符串数组(通过一定规则)遍历组合起来。
syht2000
高粉答主

推荐于2016-02-20 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
//引用单元
using System.Text.RegularExpressions;
//示例
string str = "~{Yx[1,1]|(Yx[11,3]&Yx[22,4])|Yx[24,16]}";
str = Regex.Replace(str, @"Yx\[(\d+),(\d+)\]", m =>
{
   int x = int.Parse(m.Groups[1].Value);
   int y = int.Parse(m.Groups[2].Value);
   //此处的x和y就分别是1,1   11,3   22,4等等,你可以按需要进行替换,比如 
   if (x == 11 && y == 3) return "我被替换了"; 
    else return m.Value;
});
MessageBox.Show(str);//结果为~{Yx[1,1]|(我被替换了&Yx[22,4])|Yx[24,16]}
追问
谢谢解答,但是

我需要替换所有Yx[*.*],并且我事先并不知道*.*具体的数值。
我有一种想法,先把每一个Yx[*.*]提取出来,并在原字符串相应位置做上标记,查询到了中文描述后,再把标记替换成相应的中文描述,不知是否可行,如果可行,“并在原字符串相应位置做上标记”这个步骤怎么实现?
追答
怀疑你根本没看明白上面的代码,上面代码是查找所有形如Yx[mm,nn]这种格式的内容,对于每一项找到的内容,都会进入m=>中的代码进行处理,建议研究一下再来问你的问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式