需要创建一个正则表达式来分割字符串后的第一个

本文关键字:分割 字符串 第一个 正则表达式 一个 创建 | 更新日期: 2023-09-27 18:14:01

我陷入了困境。

这里有几个输入字符串

 "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'");

请帮

需要创建一个正则表达式来分割字符串后的第一个

在您的示例中不需要正则表达式。解析string:

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中查找子字符串!如果你可以拆分你的字符串-就这么做吧,真的。它比正则表达式更容易理解。

如果您需要在第一个'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#演示

.Split(new[] {"'r'n"}, 2, StringSplitOptions.RemoveEmptyEntries)中的2意味着整个字符串应该只分成2部分,因为字符串是从左到右处理的,所以分割将发生在第一个"'r'n"子字符串上。