C#:从行中删除特定项

C#:从行中删除特定项,c#,replace,C#,Replace,我试图添加一个if条件,即如果某个特定单词存在,那么我将从行中删除 例如,我有一个字符串保存为:Subject:Your Request-5564-1345687974,然后我想删除Subject:and-1345687974。我不知道我是否正确,但是 下面是我正在做的事情。请让我知道它是否正确 if (word == "Subject:*" && word == ^[0-9]*$) { word = word.Replace("Subject:",""); wo

我试图添加一个if条件,即如果某个特定单词存在,那么我将从行中删除

例如,我有一个字符串保存为:Subject:Your Request-5564-1345687974,然后我想删除Subject:and-1345687974。我不知道我是否正确,但是 下面是我正在做的事情。请让我知道它是否正确

if (word == "Subject:*" && word == ^[0-9]*$)
{
    word = word.Replace("Subject:","");
    word = word.Replace("- "+ ^[0-9]*$,"");
}
注意:“”-1345687974。在行尾包含,行还包含其他数字

更多说明:

如果在Subject:part和Regex-part后面有一个随机行,我将如何按Subject:part删除它

示例

 Subject: Your Request - 5564 - 1345687974
 Subject: Approval Message - 7798 - 1567643389
 Subject: New Updates - 15676433
 Subject: test0616_Subline 1234 -1345687974
预期产量

Your Request - 5564
Approval Message - 7798
New Updates
test0616_Subline 1234
在第一个和第二个两个示例中,我想用-
在第三行中,我想删除Subject和-15676433,您可以使用string类的一些方法:

if (word.StartsWith("Subject") && word.EndsWith(" - 1345687974"))
{
    word = word.Replace("Subject: ", "").Replace(" - 1345687974", "");
}
请注意,
string.Replace
将替换所有替换文本。如果这是一个问题,请查看
字符串。删除
。看见

.

您可以使用字符串类的一些方法:

if (word.StartsWith("Subject") && word.EndsWith(" - 1345687974"))
{
    word = word.Replace("Subject: ", "").Replace(" - 1345687974", "");
}
请注意,
string.Replace
将替换所有替换文本。如果这是一个问题,请查看
字符串。删除
。看见
.

这样行吗

String word= "Subject: Your Request - 5564 - 1345687974";
string pat = @"^(Subject)(.*)(- )([0-9]{8,12})$";

Regex r = new Regex(pat, RegexOptions.IgnoreCase);
Match m = r.Match(word);
if (m.Groups.Count == 5)
{
    word = word.Replace("Subject:", "");

    String numberInString = m.Groups[4].Value;
    word = word.Replace(numberInString, "");
}
这会将字符串拆分为4个组的现有模式。它检查组eq 5,因为组0始终是字符串本身

可以使用正则表达式模式指定每个组。 这适用于长度在8到12位之间的任何数字。

这样行吗

String word= "Subject: Your Request - 5564 - 1345687974";
string pat = @"^(Subject)(.*)(- )([0-9]{8,12})$";

Regex r = new Regex(pat, RegexOptions.IgnoreCase);
Match m = r.Match(word);
if (m.Groups.Count == 5)
{
    word = word.Replace("Subject:", "");

    String numberInString = m.Groups[4].Value;
    word = word.Replace(numberInString, "");
}
这会将字符串拆分为4个组的现有模式。它检查组eq 5,因为组0始终是字符串本身

可以使用正则表达式模式指定每个组。
这适用于长度在8到12位之间的任何数字。

这涵盖了所有示例:

var lines = new string[] { "Subject: Your Request - 5564 - 1345687974", "Subject: Approval Message - 7798 - 1567643389", "Subject: New Updates - 15676433" };
var regex = @"Subject: (?<SUBJECT>[a-zA-Z ]*)(?: \- ) ?(?<ID>\d{4} )?";

for (int a = 0; a < lines.Length; a++)
{
    var match = Regex.Match(lines[a], regex);
    var subject = match.Groups["SUBJECT"].Value;
    var id = match.Groups["ID"].Value;

    Console.WriteLine("{0}{1}", subject, String.IsNullOrEmpty(id) ? "" : " - " + id);
}
Console.Read();
var lines=newstring[]{“主题:您的请求-5564-1345687974”,“主题:批准消息-7798-156763389”,“主题:新更新-1567633”};
var regex=@“主题:(?[a-zA-Z]*)(?:\-)(?\d{4}”);
对于(int a=0;a
产生:

您的请求-5564

批准信息-7798


新更新

这涵盖了您的所有示例:

var lines = new string[] { "Subject: Your Request - 5564 - 1345687974", "Subject: Approval Message - 7798 - 1567643389", "Subject: New Updates - 15676433" };
var regex = @"Subject: (?<SUBJECT>[a-zA-Z ]*)(?: \- ) ?(?<ID>\d{4} )?";

for (int a = 0; a < lines.Length; a++)
{
    var match = Regex.Match(lines[a], regex);
    var subject = match.Groups["SUBJECT"].Value;
    var id = match.Groups["ID"].Value;

    Console.WriteLine("{0}{1}", subject, String.IsNullOrEmpty(id) ? "" : " - " + id);
}
Console.Read();
var lines=newstring[]{“主题:您的请求-5564-1345687974”,“主题:批准消息-7798-156763389”,“主题:新更新-1567633”};
var regex=@“主题:(?[a-zA-Z]*)(?:\-)(?\d{4}”);
对于(int a=0;a
产生:

您的请求-5564

批准信息-7798



新的更新

您的思路是正确的,但是您需要使用
System.Text.RegularExpressions
命名空间中的
Regex.Replace
,并使用
^[0-9]*$
作为模式。您希望示例的最终结果是什么?@easymoney202作为最终结果,我希望您的请求是-5564删除主题:和-1345687974,但还有一个问题Regex。替换也可以删除-5564。我不想要它。解决方案应该是什么。好的,正则表达式应该是(?:Subject:(您的请求\-\d+。*),然后您可以提取匹配的0组1。查看以测试您的操作是否正确,但您需要使用
System.Text.RegularExpressions
命名空间中的
Regex.Replace
,并使用
^[0-9]*$
作为模式。您希望示例的最终结果是什么?@easymoney202作为最终结果,我希望您的请求是-5564删除主题:和-1345687974,但还有一个问题Regex。替换也可以删除-5564。我不想要它。解决方案应该是什么。好的,正则表达式应该是(?:Subject:(您的请求\-\d+。*),然后您可以提取匹配的0组1。查看以测试它,这是组的标签。这使得查找组比使用标记更容易。您做过:主题:test0616_子行1234-1345687974。“-”后面应该有空格吗?如果是“1234-1345687974”,正则表达式将搜索[number]x4[space][dash][space][number]*。如果破折号后面没有空格,我需要修改regexThank,谢谢你的解释。我看到一条评论,不知道是谁添加的评论,但似乎是那个人删除了它。在我的例子中,在“-”之后的空格可能出现,也可能不出现,这取决于输入的方式。那么它就变得更加混乱了。你需要知道分离器是什么。总是a-?如果题目中有破折号怎么办?和是组的标签。这使得查找组比使用标记更容易。您做过:主题:test0616_子行1234-1345687974。“-”后面应该有空格吗?如果是“1234-1345687974”,正则表达式将搜索[number]x4[space][dash][space][number]*。如果破折号后面没有空格,我需要修改regexThank,谢谢你的解释。我看到一条评论,不知道是谁添加的评论,但似乎是那个人删除了它。在我的例子中,在“-”之后的空格可能出现,也可能不出现,这取决于输入的方式。那么它就变得更加混乱了。你需要知道分离器是什么。总是a-?如果主题中有破折号怎么办?奇怪的是,我自己也试过了,没有发现问题。想详细说明出了什么问题吗?没错,但您也没有要求输出。你的问题不是问题