c# - 如何用正则表达式计算这个字符串?
问题描述
private static void ReceivedEventHandler(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
string text = Regex.Replace(e.Data, "^\\s+$[\\r\\n]*", "", RegexOptions.Multiline);
if (text.Contains("My Own String:"))
{
combinedOutput = Regex.Split(text, ":")[1].ToString().Trim();
combinedAuth = true;
}
if (!(text == "") && !(text == Environment.NewLine) && !(text == " ") && text != null && !(text == "\r\n") && !(text == "\n"))
{
combinedError = text;
}
}
}
我从程序中获得的这段代码确实读取了一些字符串,例如,字符串文本包含“1bc4bb7de4c58a7eba6b95b565b21a4b26b5528c2be242b96fe014bf7ff403ca”,然后它用正则表达式替换/计算字符串:^\s+$[\r\n]* 就像我上面放的代码. 我似乎无法理解。这看起来很简单,但我做不到。那么,如果有人能理解这段代码并帮助我计算响应?我想响应也将是 32 个字节。干杯!
解决方案
此代码正在执行文本处理。
string text = Regex.Replace(e.Data, "^\\s+$[\\r\\n]*", "", RegexOptions.Multiline);
第一段代码用于获取它接收到的任何多行输入并删除所有空行,基本上得到一个文本块,每行之间没有中断。这会在每行上留下前导和尾随空格。
^\s+$[\r\n]*
是用于从输入字符串中去除空行的正则表达式。
^\s+$
匹配只包含空格的行[\r\n]*
在此空行之后匹配任意数量的换行符或返回字符。
正则表达式的第二部分是必要的,因为否则,两行输入之间的一对换行符将保留在原处。请注意,类似的效果可以通过^\s+$\s*
if (text.Contains("My Own String:"))
{
combinedOutput = Regex.Split(text, ":")[1].ToString().Trim();
combinedAuth = true;
}
一旦文本被缩减为单行,就会检查这些行是否以短语开头My Own String:
- 如果是,则通过Regex.Split()
在冒号上断开来删除短语。然后修剪生成的字符串以删除前导和尾随空格。如果文本不是以 开头My Own String:
,则任何前导或尾随空格都将保持不变。
if (!(text == "") && !(text == Environment.NewLine) && !(text == " ") && text != null && !(text == "\r\n") && !(text == "\n"))
{
combinedError = text;
}
现在检查文本。如果...
!(text == "")
该字符串不为空,并且...!(text == Environment.NewLine)
该字符串不仅包含换行符(在 Unix 上)或换行符和回车符(在 Windows 上),而且...!(text == " ")
该字符串不只包含一个空格,并且...text != null
字符串不是null
,并且...!(text == "\r\n")
该字符串不包含回车符和换行符,并且...!(text == "\n")
文本不仅仅包含换行符...
...然后combinedError
设置为等于已处理和检查的字符串。我相信这段代码可以进行重大重构;检查 fornull
通常是避免 NullPointerExceptions 的第一个条件语句,并且Environment.NewLine
涵盖\r\n
和\n
。
推荐阅读
- javascript - 按下按钮时更改 HTML 文件中的脚本引用
- r - r 中图例的附加文本
- swift - 无法推断复杂的闭包返回类型swiftUI
- r - Left_Join 在 R 中不重复
- service-worker - 如何让 Google Closure Compiler 理解 `caches` 变量(CacheStorage)?
- c# - WPF 动画适用于所有控件,而不仅仅是我需要的一个
- string - 如何将基于空格(制表符或不均匀空间)的字符串分隔为元组?
- spring - 如何在spring boot中启动应用程序时调用存储过程?
- ruby-on-rails - 显示带有某些条件的最后一个对象 Rails
- python - 在 python 中,如何计算 3 个或更多数据帧的 MAX 和 MIN