我一直陷入困境。
这里有几个输入字符串 -
"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\");
请帮助
答案 0 :(得分: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不是解析语言!它是模式匹配器!它用于在字符串中查找子字符串!如果你可以拆分你的字符串 - 就这样做,真的。它比Regex表达更容易理解。
答案 1 :(得分:1)
如果您需要在第一个\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
2
中的.Split(new[] {"\r\n"}, 2, StringSplitOptions.RemoveEmptyEntries)
表示整个字符串应仅拆分为2个部分,并且由于字符串是从左到右处理的,因此拆分将在首先进行“\ r \ n”找到子串。