gpt4 book ai didi

C# 将字符串拆分为标记的更直观方法?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:07 25 4
gpt4 key购买 nike

我有一个接受字符串的方法,其中包含各种字符,但我只关心下划线“_”和美元符号“$”。我想通过下划线将字符串拆分为标记,因为下划线的每一部分都包含重要信息。

但是,如果 $ 包含在下划线之间的区域中,则应从下划线的最后一次出现到末尾创建一个标记(忽略最后一部分中的任何下划线)。

示例

输入:Hello_To_The$Great_World

预期标记:Hello, To, The$Great_World

问题

我在下面有一个解决方案,但我想知道是否有比下面的方法更简洁/更直观的方法?

var aTokens = new List<string>();
var aPos = 0;
for (var aNum = 0; aNum < item.Length; aNum++)
{
if (aNum == item.Length - 1)
{
aTokens.Add(item.Substring(aPos, item.Length - aPos));
break;
}
if (item[aNum] == '$')
{
aTokens.Add(item.Substring(aPos, item.Length - aPos));
break;
}
if (item[aNum] == '_')
{
aTokens.Add(item.Substring(aPos, aNum - aPos));
aPos = aNum + 1;
}
}

最佳答案

您可以通过 _ 拆分字符串,而不是在它们之前有 $

为此,您可以使用以下正则表达式:

(?<!\$.*)_

示例代码:

string input = "Hello_To_The$Great_World";
string[] output = Regex.Split(input, @"(?<!\$.*)_");

您也可以在没有正则表达式和循环的情况下完成任务,但需要 2 个拆分的帮助:

string input = "Hello_To_The$Great_World";
string[] temp = input.Split(new[] { '$' }, 2);
string[] output = temp[0].Split('_');
if (temp.Length > 1)
output[output.Length - 1] = output[output.Length - 1] + "$" + temp[1];

关于C# 将字符串拆分为标记的更直观方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31975628/

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