需要创建一个正则表达式来分割字符串后的第一个
本文关键字:分割 字符串 第一个 正则表达式 一个 创建 | 更新日期: 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"子字符串上。