求大神 C# 字符串替换
原字符串:C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸与氯化2-羟基-<i>N</i>-(2-羟乙基)-<i>N</i>,<i>N</i>-二甲基乙铵的酯化物;C<Sub>16-18</Sub>/C<Sub>18</Sub>不饱和脂肪酸与甲基二乙醇胺和氯甲烷的季铵化反应产物;甲基二乙醇胺与C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸和氯甲烷的季铵盐化合物
想要的字符串:C1下标6下标-下标1下标8下标和C1下标8下标不饱和脂肪酸与氯化2-羟基-N斜体-(2-羟乙基)-N斜体,N斜体-二甲基乙铵的酯化物;C1下标6下标-下标1下标8下标/C1下标8下标不饱和脂肪酸与甲基二乙醇胺和氯甲烷的季铵化反应产物;甲基二乙醇胺与C1下标6下标-下标1下标8下标和C1下标8下标不饱和脂肪酸和氯甲烷的季铵盐化合物
求大神贴代码 或思路啊.... 字符串 c# 大神
[解决办法]
string str = "C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸与氯化2-羟基-<i>N</i>-(2-羟乙基)-<i>N</i>,<i>N</i>-二甲基乙铵的酯化物;C<Sub>16-18</Sub>/C<Sub>18</Sub>不饱和脂肪酸与甲基二乙醇胺和氯甲烷的季铵化反应产物;甲基二乙醇胺与C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸和氯甲烷的季铵盐化合物";
str = Regex.Replace(str, "<Sub>(.*?)</Sub>", delegate(Match m)
{
return string.Join("", m.Groups[1].Value.Select(t => t+"下标").ToArray());
});
[解决办法]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s = "C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸与氯化2-羟基-<i>N</i>-(2-羟乙基)-<i>N</i>,<i>N</i>-二甲基乙铵的酯化物;C<Sub>16-18</Sub>/C<Sub>18</Sub>不饱和脂肪酸与甲基二乙醇胺和氯甲烷的季铵化反应产物;甲基二乙醇胺与C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸和氯甲烷的季铵盐化合物";
s = Regex.Replace(s, @"\<Sub\>([\w-]+)\<\/Sub\>", x => string.Join("", x.Groups[1].Value.ToCharArray().Select(y => y.ToString() + "下标").ToArray()), RegexOptions.None);
s = Regex.Replace(s, @"\<i\>([\w-]+)\<\/i\>", x => string.Join("", x.Groups[1].Value.ToCharArray().Select(y => y.ToString() + "斜体").ToArray()), RegexOptions.None);
Console.WriteLine(s);
}
}
}
string s = "C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸与氯化2-羟基-<i>N</i>-(2-羟乙基)-<i>N</i>,<i>N</i>-二甲基乙铵的酯化物;C<Sub>16-18</Sub>/C<Sub>18</Sub>不饱和脂肪酸与甲基二乙醇胺和氯甲烷的季铵化反应产物;甲基二乙醇胺与C<Sub>16-18</Sub>和C<Sub>18</Sub>不饱和脂肪酸和氯甲烷的季铵盐化合物";
string r = Regex.Replace(s, @"(?is)<(Sub
[解决办法]
i)>(?<value>.+?)</\1>", delegate(Match m)
{
if (m.Groups[1].Value.ToLower() == "sub")
return Regex.Replace(m.Groups["value"].Value, ".", "$0下标");
else
return Regex.Replace(m.Groups["value"].Value, ".", "$0斜体");
});
Console.WriteLine(r);