我想替换任何不在左边的子字符串。像,
输入:“ComputerPart”
查找substring =“t” 替换substring =“success”
输出: CompusuccesserParsuccess
输入:“topaz”
查找substring =“t” 替换substring =“success”
输出: topaz // t来自字符串'topaz'的第一个位置(左侧),因此不应替换它。
输入:“问题”
查找substring =“t” 替换substring =“success”
输出: quessuccessions //这次应该替换为字符串'questions'中间的't'
为了达到这个目的,请帮我在C#中找到一个正则表达式模式以及实现此目的的任何代码示例。
答案 0 :(得分:1)
您正在寻找左侧的word boundary:
\Bt
\B
是一个零宽度断言,匹配位置左侧和右侧是单词字符(或非单词字符)。所以这里你在\B
的右边有一个“t”,所以只有在“t”的左边也是一个单词字符时它才会匹配。
换句话说:它取代了不在“单词”开头的每个“t”。
所以我现在在c#中测试了它:
string[] myStrings = { "ComputerPart",
"topaz",
"questions"
};
Regex reg = new Regex(@"\Bt");
foreach (string str in myStrings) {
Console.Out.WriteLine(reg.Replace(str, "success") );
}
它产生的输出与regexr完全相同:
CompusuccesserParsuccess
黄玉
quessuccessions
答案 1 :(得分:0)
怎么样:
int pos = text.IndexOf("t");
if(pos>0)
text = text.Replace("t", "Success");
我是否得到你的家庭作业: - )
答案 2 :(得分:0)
这次我想要更多的家庭作业!
string readText = File.ReadAllText(path);
string[] lines = readText.Split(Environment.NewLine);
string output;
foreach(string line in lines)
{
int pos = text.IndexOf("t");
if(pos>0)
text = text.Replace("t", "Success");
output += text + Environment.NewLine;
}
File.AppendAllText(newPath, output);
答案 3 :(得分:0)
我想这就是你需要的,
string[] inputstrings = { "ComputerPart", "topaz", "questions" };//An array of input strings to manipulate.
string output = "";
Regex rgx = new Regex("t");//Regex pattern to match occurence of 't'.
foreach (string inputstring in inputstrings)//Iterate through each string in collection.
{
output = rgx.Replace(inputstring, "success", int.MaxValue, 1);//Replace each occurence of 't' excluding those occurring at position [0] in inputstring.
MessageBox.Show(output);//Show output string.
}
我所做的是:
Ideone示例。
希望它对你有所帮助。