gpt4 book ai didi

c# - 使用加号作为分隔符拆分字符串

转载 作者:太空狗 更新时间:2023-10-30 00:48:07 26 4
gpt4 key购买 nike

我对包含加号 (+) 的字符串有疑问。我想拆分那个字符串(或者如果有其他方法可以解决我的问题)

string ColumnPlusLevel = "+-J10+-J10+-J10+-J10+-J10";
string strpluslevel = "";
strpluslevel = ColumnPlusLevel;
string[] strpluslevel_lines = Regex.Split(strpluslevel, "+");

foreach (string line in strpluslevel_lines)
{
MessageBox.Show(line);
strpluslevel_summa = strpluslevel_summa + line;
}

MessageBox.Show(strpluslevel_summa, "summa sumarum");

MessageBox 用于我的测试目的。

现在... ColumnPlusLevel 字符串可以有非常不同的条目,但它始终是一个以加号开头的重复模式。例如“+MJ+MJ+MJ”或“+PPL14.1+PPL14.1+PPL14.1”。(它来自另一个软件,我无法编辑该软件的输出)

我怎样才能找出正在重复的模式是什么?在这个示例中是 +-J10 或 +MJ 或 +PPL14.1

在我上面的例子中,我已经通过仅使用 MessageBox 来显示结果来测试它,但我希望稍后将重复的模式存储在一个字符串中。

也许我使用 Split 做错了,也许还有另一种解决方案。也许我以错误的方式使用了 Split。

希望你能理解我的问题和我想要的结果。

感谢您的任何建议。

/托马斯

最佳答案

How can I find out what that pattern is that is being repeated?

也许我没有完全理解要求,但这不是很容易吗:

string[] tokens = ColumnPlusLevel.Split(new[]{'+'}, StringSplitOptions.RemoveEmptyEntries);
string first = tokens[0];
bool repeatingPattern = tokens.Skip(1).All(s => s == first);

如果repeatingPatterntrue你知道模式本身是 first .

Can you maybe explain how the logic works

包含tokens.Skip(1) 的行是一个 LINQ 查询,所以你需要添加 using System.Linq在代码文件的顶部。自 tokensstring[]实现IEnumerable<string>您可以使用任何 LINQ(扩展)方法。 Enumerable.Skip(1)跳过第一个,因为我已经将它存储在一个变量中,我想知道是否所有其他的都相同。因此我使用 All返回 false一旦一个项目不符合条件(所以一个字符串与第一个不同)。如果全部相同,您就知道有一个重复模式已存储在变量 first 中。 .

关于c# - 使用加号作为分隔符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49556144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com