从字符串中提取数字后跟“I-”

时间:2017-02-07 00:28:44

标签: c# string extract

在C#中,我将最后一行从日志文件分配给字符串“str” 我想提取“I-”之后的数字,并将其存储在数据类型中,以便稍后在程序中使用。在下面的例子中,我需要得到667466.
请帮忙怎么做?

string str = "2017-01-16 11:10:37.151 +11:00 [Information] OutboundMessageFile:MessageFields: [KeyValuePair`2 { Key: \"ConfirmationCode\", Value: \"I-667466\" }], MessageAttachments: \"\", MessageConfig: \"\", MachineName: \"MARYDEV234\" }"

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式查找此数据。

@Entity
@Audited
public class E {
  @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
  private A a;
  @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
  private B b;
  @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)     
  private C c;
}

答案 1 :(得分:0)

我个人喜欢Uladzimir的正则表达式解决方案,但这里有另一种选择:

string str = "2017-01-16 11:10:37.151 +11:00 [Information] OutboundMessageFile:MessageFields: [KeyValuePair`2 { Key: \"ConfirmationCode\", Value: \"I-667466\" }], MessageAttachments: \"\", MessageConfig: \"\", MachineName: \"MARYDEV234\" }";
int index = str.IndexOf("I-");
index += 2; //Skip the "I-"
string output = "";
for(int i = index; true; i++)
{
    if(str[i] == '"')
        break;
    output += str[i];
}
Console.WriteLine(output);

这仅适用于特定格式的字符串,但正则表达式解决方案更具通用性。您可以升级此版本以使output成为StringBuilder而不是字符串。