查找位于任何字符串中间或右侧的子字符串

本文关键字:字符串 中间 于任何 查找 | 更新日期: 2023-09-27 18:31:54

我想替换任何没有出现在左边的子字符串。喜欢

  1. 输入:"计算机部件"

    查找子字符串 ="t"替换子字符串 ="成功"

    输出CompusuccesserParsuccess

  2. 输入:"黄玉"

    查找子字符串 ="t"替换子字符串 ="成功"

    输出黄玉//t 位于字符串"托帕石"的第一(左)位置,因此不应替换。

  3. 输入:"问题"

    查找子字符串 ="t"替换子字符串 ="成功"

    输出:问题连续//这次应该替换为字符串"问题"中间的"t"

请帮助我在 C# 中找到用于此目的的正则表达式模式以及实现此目的的任何代码示例。

查找位于任何字符串中间或右侧的子字符串

您正在寻找左侧的单词边界:

'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") );
}

它产生的输出与正则表达式完全相同:

CompusuccesserParsuccess
黄玉
问题继承

怎么样:

int pos = text.IndexOf("t");
if(pos>0)
   text = text.Replace("t", "Success");

我得到你的家庭作业学分吗:-)

这次我想要更多的家庭作业学分!

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);
我想

这就是你需要的,

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.
}

我所做的是:

  • 循环遍历集合中的每个字符串。
  • 将每个字符串与任何出现的"t"的正则表达式匹配。
  • 搜索从每个字符串派生的字符数组中的位置 1 开始。所以它自动在字符串开头保留任何出现的"t"。

艾迪酮样品。

希望对您有所帮助。