【问题标题】:Need to create a Regular expression to Split String after first \r\n需要在第一个 \r\n 之后创建一个正则表达式来拆分字符串
【发布时间】:2016-10-20 06:57:04
【问题描述】:

我陷入了困境。

这里有几个输入字符串 -

 "abacuses\r\n25"

"alphabet\r\n56,\r\n57"

"animals\r\n44,\r\n45,\r\n47"

我需要像这样拆分输出 -

"abacuses\r\n25" to be splitted into A)abacuses B)25


"alphabet\r\n56,\r\n57" to be splitted into A)alphabet B)56,57


"animals\r\n44,\r\n45,\r\n47" to be splitted into A)animals B)44,45,47

到目前为止,我已经尝试过了,但它不起作用-

string[] ina = Regex.Split(indexname, @"\r\n\D+");

string[] ina = Regex.Split(indexname, @"\r\n\");

请帮忙

【问题讨论】:

  • 好的,"animals\r\n44,\r\n45,trees,\r\n47" 呢?它是一种可能的输入类型吗?如果是,您期望的输出是什么?

标签: c# asp.net regex


【解决方案1】:

您的示例中不需要正则表达式。你基本上解析字符串:

string input = "animals\r\n44,\r\n45,\r\n47";
var split = input.Split(new char[]{'\r','\n',','}, StringSplitOptions.RemoveEmptyEntries);

var name = split[0];                        //animals
var args = string.Join(",", split.Skip(1)); //44,45,37

很多人用它来解析,但是Regex不是解析语言!它是模式匹配器!用于查找string中的substrings!如果您可以Split 您的字符串 - 就去做吧,真的。它比Regex表达式更容易理解。

【讨论】:

  • 在这种情况下,您不知道是否删除了逗号分隔数字之间的换行符。标题表明它并不重要,但示例非常具体。
  • @eocron06 你真是个救命稻草。谢谢
  • 请注意:这种方法将导致删除任何独立的\r\n,如果它们出现在\r\n 之前,则会导致意外结果。我同意这在这里可能不是那么重要,但值得注意。
  • 当然。这个问题有42个解决方案。我们总共只代表了其中的 2 个。 40 条路要走 =)
【解决方案2】:

如果您需要在第一个\r\n 处拆分字符串,您可以使用带有count 参数的String.Split

var line = "animals\r\n44,\r\n45,\r\n47";
var res = line
    .Split(new[] {"\r\n"}, 2, StringSplitOptions.RemoveEmptyEntries);
// Demo output
Console.WriteLine(res[0]);
if (res.GetLength(0) > 1) 
    Console.WriteLine(res[1].Replace("\r\n", "")); // In the second value, linebreaks should be removed

C# demo

.Split(new[] {"\r\n"}, 2, StringSplitOptions.RemoveEmptyEntries) 中的2 表示整个字符串应该只分成两部分,并且由于字符串是从左到右处理的,因此将在 first "\ r\n" 找到子字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多