【发布时间】:2013-05-10 14:44:07
【问题描述】:
我有许多字符串格式:RGB:ABC.XX,DEF.XX,GHI.XX 其中 ABCDEFGHI 是数字。
我需要从该字符串中提取 R (ABC)、G (DEF)、B (GHI) 问题是字符串可以采用多种形式,例如
RGB:AB.XX,DE.XX,GHI.XX
RGB:ABC.XX,DE.XX,GH.XX
RGB:ABC.XXX,DE.XX,GH.XX
RGB:ABC.XXX,DE.XX,GH.XX
...
...
...
如您所见,从该字符串中提取此 rbg 需要考虑很多事情。
我尝试使用 LINQ,但我认为那将是一团糟(这仅适用于第一个 'R'(红色)):
rgb[0] = new String(rgbName.SkipWhile(x => char.IsLetter(x) || x == ':').TakeWhile(x => char.IsNumber(x)).ToArray());
有没有更有效的方法来做到这一点?也许正则表达式可以做那件事,但我不是专家。任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
当您正在寻找一种高效的方式时,我会说:-)
-
ABCDEFGHI是正确的数字! -
一些
string.Split可能会在你的未来...... -
@Anirudh ABCDEFGHI ar number 是的,对不起。
-
我同意戴夫的观点。我将首先使用 IndexOf 获取一个子字符串并使用冒号 + 1 的索引。然后您将有一个子字符串,例如:“ABC.XX,DE.XX,GHI.XX”。然后您可以使用 List
tempList = yourSubstring.Split(',').ToList();那么你的 tempList 中应该有 3 个对象,你可以只获取 '.' 之前的值。对于每个字符串。话虽如此,我确信 RegEx 可能是解决此问题的最佳解决方案。
标签: c# regex string linq split