在C#中,如果我有一个长字符串,它总是包含某个格式,例如W ## S ## Q ##,其中#可以是任何数字,我怎样才能获得W ## S ##的序列Q ##从字符串中提取。请记住,字符串可能在之前或之后有更多,但我只对该序列感兴趣。
问候。
答案 0 :(得分:1)
摆动评论是正确的,regular expression等@"W\d{2}S\d{2}Q\d{2}"
可以满足您的需求。 \d
匹配任何十进制数字,之后{2}
告诉它匹配两次。
This fiddle给出了一个如何从较长的字符串中提取所需字符串的示例。
答案 1 :(得分:1)
摆动是正确的,正则表达式是一般的最佳方式。对于您的具体示例,如果您事先知道W,S,Q部分将始终位于您可以使用的相同位置:
string testString = "WSomethingW01S02Q03SomethingElse";
bool TheRightString = false;
string WNumString = string.Empty;
string SNumString = string.Empty;
string QNumString = string.Empty;
int StartPosition = 0;
do
{
StartPosition = testString.IndexOf('W', StartPosition);
WNumString = testString.Substring(StartPosition, 3);
SNumString = testString.Substring(StartPosition + 3, 3);
QNumString = testString.Substring(StartPosition + 6, 3);
StartPosition += 1;
if (SNumString.StartsWith("S") && QNumString.StartsWith("Q"))
TheRightString = true;
} while (TheRightString == false);
Console.WriteLine(WNumString + SNumString + QNumString);
Console.ReadKey();