c# - 从更长的字符串中提取字符串

标签 c# .net string

我正在C#中创建一个应用程序,该应用程序使用EConnect将信息导入大平原。 EConnect拥有自己的一组异常,这真的很高兴知道您是否向应用程序传递了错误的信息。如果抛出EConnectException,我想显示一条错误消息。我的问题是EConnect异常很长,因此我想从中提取特定部分。

异常字符串类似于以下示例:


  Microsoft.Dynamics.GP.eConnect.eConnectException:返回了SQL过程错误代码:
  
  错误号= 714存储过程= taPMTransactionInsert错误描述=您输入的1099值(TEN99AMNT)不能大于购买金额(PRCHAMNT)减去交易折扣金额(TRDISAMT)节点标识符参数:taPMTransactionInsert


对于错误消息,我真正想要的只是“错误描述”部分。因为该部分总是相同的长度,所以很容易在“错误描述”之前剪下该部分。错误说明的长度可能会有所不同,因此我无法确定如何提取错误。最后,我希望它从错误描述开始并在节点标识符参数之前结束(总是在错误描述之后)

这是我现在捕获异常并切断错误消息第一部分的方式。 setStatusErrorLogs只是我用来向我的应用显示错误的函数。

catch (eConnectException exc)
{
    setStatusErrorLogs((exc.ToString()).Substring(85), xInvoiceNumber + ": ", "CreateInvoice");
}


有什么想法可以提取此字符串吗?

最佳答案

使用string.IndexOf方法

var error = exc.ToString();
var startIndex = error.IndexOf("Error Description = ") + "Error Description = ".Length;
var endIndex = error.LastIndexOf("Node Identifier Parameters:");
var desc = error.Substring(startIndex, endIndex - startIndex);
setStatusErrorLogs(desc, xInvoiceNumber + ": ", "CreateInvoice");


这种方法很容易出错!如果您不确定比赛的确切格式和内容,则应进行检查以免获取垃圾数据!

关于c# - 从更长的字符串中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685744/

相关文章:

c# - 错误 2 使用未分配的局部变量 'Y'

java - 使用扫描仪或正则表达式java分割字符串

c# - Automapper 不从包含单个可为空 bool 字段的源进行映射

c# - 如何包装Web API响应(在.net核心中)以保持一致性?

用于 SSH 和 Telnet 的 C# 库

.net - 可能的线程,变量复制问题

python - 如何在 Python 中创建 JSON 可编码动态字符串

比较字符串数组中的特定字符串

c# - 在 C# 中使用 LINQ 将分隔字符串转换为数组和组

c# - 用于将 .net Web 服务反序列化为 DateTime() 的 Java JSONObject