在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\" }"
答案 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而不是字符串。