我正在尝试添加if条件,如果存在特定单词,则从行中删除。
例如我有一个字符串保存为:主题:您的请求 - 5564 - 1345687974 然后我想删除主题:和 - 1345687974.我不知道我是对的但是 以下是我的方式。如果它是正确的,请告诉我
if (word == "Subject:*" && word == ^[0-9]*$)
{
word = word.Replace("Subject:","");
word = word.Replace("- "+ ^[0-9]*$,"");
}
注意:" " - 1345687974.行末尾包含其他数字。
更多说明:
如果我在Subjet之后有一个随机行:我将如何通过Subject:part和Regex部分删除。
示例
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
在第一个&第二个例子我想删除最后的Suvject和数字 - 在第三行,我将删除主题和 - 15676433
答案 0 :(得分:0)
您可以使用字符串类的方法:
if (word.StartsWith("Subject") && word.EndsWith(" - 1345687974"))
{
word = word.Replace("Subject: ", "").Replace(" - 1345687974", "");
}
请注意,string.Replace
会替换所有替换文本。如果这是一个问题,请查看string.Remove
。看到
https://msdn.microsoft.com/en-us/library/system.string_methods%28v=vs.110%29.aspx
答案 1 :(得分:0)
这会吗?
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位之间的任何数字。
答案 2 :(得分:0)
这涵盖了您的所有示例:
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();
产地:
您的要求 - 5564
批准讯息 - 7798
新更新