C# 替换字符串中的字符的方法

例如有个字符串:1,11,111,1111根据需要,我可能要替换1这个字符,也就是这个字符的前一位和后一位只能是逗号或者是开头或结尾的空白。应该怎么写?这样说吧,我把几个... 例如有个字符串:1,11,111,1111

根据需要,我可能要替换 1 这个字符,也就是这个字符的前一位和后一位只能是逗号或者是开头或结尾的空白。应该怎么写?
这样说吧,我把几个字符串连接成一个字符串,并加用逗号分开。
我现在只想把 "1" 这个字符串替换为 "2" (而不是11或111或1111)。即替换为2,11,111,111。

但是实际情况中,"1"这个字符串不一定在第一位,也可能在中间,也可能在结尾。
展开
 我来答
独周啊8617
2011-02-15 · TA获得超过405个赞
知道答主
回答量:148
采纳率:0%
帮助的人:157万
展开全部

用历遍然后再判断

这是一个控制台程序,按照你的要求写的

static void Main(string[] args)

        {

            string s = "11,1,111,11,1,11111,1"; //原始数据

            string s2 = "";  //改后的数据

            for (int i = 0; i < s.Length; i++)

            {

                if (s[i] == '1') // 如果当前的字符是1的话,然后判断他前后是什么

                {

                    if (i == 0) //如果他是第一个字符,也就是前面空的

                    {

                        if (i == s.Length - 1) //如果他是第一个字符,也是最后一个字符(例如 1)

                        {

                            s2+="2"; //改变字符

                        }

                        else if (s[i + 1] == ',') //如果他不是最后一个字符,但他后一个字符是,的话

                        {

                            s2 += "2"; //改变字符

                        }

                        else //不符合条件

                        {

                           s2+= s[i].ToString();

                        }

                    }

                    else //如果他不是第一个字符,判断他前后是什么

                    {

                        if (i == s.Length - 1) //如果他是最后一个字符,那就只判断他前面的字符

                        {

                            if (s[i - 1] == ',') //如果他是最后一个字符,而且前一个字符是,的话

                            {

                                s2 += "2"; //改变字符

                            }

                            else //他是最后一个字符,但他前一个字符不是,号

                            {

                                s2 += s[i].ToString();

                            }

                        }

                        else //如果他不是第一个字符,也不是最后一个字符,那么判断他前后是否为,号

                        {

                            if (s[i - 1] == ',' && s[i + 1] == ',')

                            {

                                s2 += "2"; //改变字符

                            }

                            else

                            {

                                s2 += s[i].ToString();

                            }

                        }

                    }

                }

                else //当前字符不是1的话,直接不改

                {

                    s2+= s[i].ToString();

                }

            }

            //输出改后的数据

            Console.WriteLine("原始数据:"+s);

            Console.WriteLine("改变后的数据:"+s2);

            Console.Read();

        }

你可以更改原始数据进行测试,我测试过没问题,程序指挥改掉单个的1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你是谁LCqTt
2011-02-12 · TA获得超过602个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:848万
展开全部
按你这个例子,你可以把字符串按,分割成字符串数组,然后遍历数组,当数组元素等于你要替换的字符串时,改变该元素,最后把该数组组合成新的字符串。以下提供一个解决方案供你参考:
var str = "1,11,111,1111";
var segments = str.Split(',');

for (var i = 0; i < segments.Length; i++)
{
if (segments[i] == "1")//假定要替换1
{
segments[i] = "a";
}
}

var sb = new StringBuilder();
for (var i = 0; i < segments.Length; i++)
{
sb.Append(segments[i]);
if (i != segments.Length - 1)
{
sb.Append(",");
}
}
Console.WriteLine(sb.ToString());
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树儿传说
2011-02-15 · TA获得超过1243个赞
知道小有建树答主
回答量:1507
采纳率:52%
帮助的人:201万
展开全部
两种方法:一是在字符串的前面和后面各加一个,号。再replace(",1,",",2,")最后再在前后各去除一个逗号;
二是用数组。
楼主,真想打你一顿,你怎么这么懒呢?现实编程中有很多问题都没有模板要套呀,你自己多想想就出方法了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cockermu
2011-02-12 · TA获得超过442个赞
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:92.2万
展开全部
我看明白你的意思了,我写了一个,你试下:
static void Main(string[] args)
{
string replaceStr="1,11,1111,111";
replaceStr = ReplaceStr(replaceStr, "11", "cocker");
Console.WriteLine(replaceStr);
}
static string ReplaceStr(string str, string oldStr, string newStr)
{
str = ',' + str + ',';
str = str.Replace(',' + oldStr + ',', ',' + newStr + ',');
return str.Substring(1, str.Length - 2);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxz0539
2011-02-12 · TA获得超过1597个赞
知道大有可为答主
回答量:1759
采纳率:0%
帮助的人:1742万
展开全部
没看懂~~~ .
===============看看是不是这个意思=====
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
string s = "1,11,111,1111";
var r = from n in s.Split(',') select Regex.Replace(n, "(?:^|[^1])(1)(?:[^1]|$)", "2");
Console.WriteLine(string.Join(",",r));
Console.ReadKey(true);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式