动态选择 DLL 中字符串中的字符列表

发布于 2025-01-13 21:49:07 字数 437 浏览 1 评论 0原文

我是新来的,我的英语不会是你今天读到的最好的。 我刚刚从 DLL 导入了“密钥”列表

(#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-# ehddtk-####9py),

我们将这样命名它,它是一个简单的字符串。 我需要在每个 # 之后选择组成该字符串的“键”,但它必须动态完成,而不是像您在 ArrayList [0,1,2 ...] 中选择的那样。 最终结果应该看起来像 8yg54w,在你得到这个之后,它是一个循环,你得到下一个,这意味着 95jz#e。第一个“#”是每个键的分隔符。 我想知道如何继续获取第一个分隔符之后的每个密钥。 我会尽力回答你的问题,因为我认为会有一些问题,这可能解释得不好,我提前道歉!谢谢

I'm new here and my English will not be the best you'll read today.
I just imported from a DLL a list of "key"

(#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py),

we will name it this way it's a simple string.
I need to select the "key" that compose this string after each # but it has to be done dynamically and not like you choose in an ArrayList [0,1,2 ...].
The end result should look like 8yg54w and after u got this one it's a loop and u get the next one, which means 95jz#e. The first "#" is a separator for each key.
I wanna know how can I proceed to get each key after the first separator.
I'll try to answer your questions because I think that there will be some, this is probably poorly explained, I apologize in advance! Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

素染倾城色 2025-01-20 21:49:07

您的解决方案可能是一个返回 IEnumerable 的简单函数。您可以通过拆分字符串并使用 yield 关键字返回迭代器来实现此目的。例如,

// Define the splitting function
public IEnumerable<string> GetKeys(string source) {
  var splitted = source.Split("-#");
  foreach (var key in splitted)
    yield return key;
}

// Use it in your code
var myKeys = GetKeys("#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py");

foreach(var k in myKeys) {
  // This will print your keys in the console one per line.
  Console.WriteLine(k);
}

您可以使用这种方法,但如果您需要它成为唯一的全球密钥生成器,我建议更好地隐藏获取下一个密钥的逻辑。使用仅具有 GetNextKey() 方法的静态类,该方法可以是上面代码的组合...

Your solution may be a simple function that returns an IEnumerable<string>. You can accomplish this by splitting the string and using the yield keyword to return an iterator. E.g.

// Define the splitting function
public IEnumerable<string> GetKeys(string source) {
  var splitted = source.Split("-#");
  foreach (var key in splitted)
    yield return key;
}

// Use it in your code
var myKeys = GetKeys("#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py");

foreach(var k in myKeys) {
  // This will print your keys in the console one per line.
  Console.WriteLine(k);
}

You can use this approach but I suggest to better hide the logic to get the nex Key if you need it to be a Unique Gobal Key generator. Using a static class with only a GetNextKey() method that can be the combination of the code above...

南城旧梦 2025-01-20 21:49:07

这应该返回一个键数组。

string.Split("-#");

当你只需要字符串时:

string x = "(#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py)";
Console.WriteLine(string.Join("-", x.Split("-#")));

This should return an array of keys.

string.Split("-#");

When you just need the string:

string x = "(#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py)";
Console.WriteLine(string.Join("-", x.Split("-#")));
再可℃爱ぅ一点好了 2025-01-20 21:49:07

您可以使用正则表达式

string input = "(#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py)";
MatchCollection matches = Regex.Matches(input, @"(?<=\#)[A-Za-z1-9#]+(?=-)");
foreach (Match match in matches) {
    Console.WriteLine(match.Value);
}

输出:

8yg54w
95jz#e
#9ixop
7ps
ny#9qv
bp669x
bp6696
bp6696
bp6696
bp6696
bp6696
fbhstu
ehddtk

正则表达式的解释 (?<=\#)[A-Za-z1-9#]+(?=-)

  • 一般形式 (?<=prefix) find(?=suffix) 查找前缀后缀之间的模式find
  • (?<=\#) 前缀 #(使用 \ 转义)。
  • [A-Za-z1-9#] 要匹配的字符集(大小写字母+数字+#)。
  • + 量词:至少一个字符。
  • (?=-) 后缀 -

我不确定 ) 是否是字符串的一部分。要获取最后一个键 ###9py(如果字符串包含 ),请使用 (?<=\#)[A-Za-z1-9#] +(?=-|\)) 其中 \) 是转义的右大括号。如果 ) 在那里,请使用 (?<=\#)[A-Za-z1-9#]+(?=-|$) 其中 $ 是字符串的结尾。 | 表示“或”。即,后缀要么是“-”OR ),要么是- OR $(行尾)。

You can use a Regular expression.

string input = "(#8yg54w-#95jz#e-##9ixop-#7ps-#ny#9qv-#+pzbk5-#bp669x-#bp6696-#bp6696-#bp6696-#bp6696-#bp6696-#fbhstu-#ehddtk-####9py)";
MatchCollection matches = Regex.Matches(input, @"(?<=\#)[A-Za-z1-9#]+(?=-)");
foreach (Match match in matches) {
    Console.WriteLine(match.Value);
}

Output:

8yg54w
95jz#e
#9ixop
7ps
ny#9qv
bp669x
bp6696
bp6696
bp6696
bp6696
bp6696
fbhstu
ehddtk

Explanation of the regular expression (?<=\#)[A-Za-z1-9#]+(?=-)

  • General form (?<=prefix)find(?=suffix) finds the pattern find between a prefix and a suffix.
  • (?<=\#) prefix # (escaped with \).
  • [A-Za-z1-9#] character set to match (upper and lower case letters + digits + #).
  • + quantifier: At leat one character.
  • (?=-) suffix -.

I am not sure whether the ) is part of string. To get the last key ###9py if the string contains ) use (?<=\#)[A-Za-z1-9#]+(?=-|\)) where \) is the right brace escaped. If ) is in there, use (?<=\#)[A-Za-z1-9#]+(?=-|$) where $ is the end of the string. | means OR. I.e., the suffix is either '-' OR ) or it is - OR $ (end of line).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文