C# 替换字符串中的字符的方法
根据需要,我可能要替换 1 这个字符,也就是这个字符的前一位和后一位只能是逗号或者是开头或结尾的空白。应该怎么写?
这样说吧,我把几个字符串连接成一个字符串,并加用逗号分开。
我现在只想把 "1" 这个字符串替换为 "2" (而不是11或111或1111)。即替换为2,11,111,111。
但是实际情况中,"1"这个字符串不一定在第一位,也可能在中间,也可能在结尾。 展开
用历遍然后再判断
这是一个控制台程序,按照你的要求写的
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
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());
二是用数组。
楼主,真想打你一顿,你怎么这么懒呢?现实编程中有很多问题都没有模板要套呀,你自己多想想就出方法了
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);
}
===============看看是不是这个意思=====
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);
}
}
}