2012-05-23 2 views
0

나는 다음과 같은 코드가 있습니다표시 다음 세트

int numberOfWords = 50; 

string regexMatch = string.Format(@"^(\w+\b.*?){{" + numberOfWords + "}}"); 
string firstWords = Regex.Match(result, regexMatch).Value; 

이 코드는 문자열의 첫 번째 50 개 단어를 표시합니다. 이제 다음 50 단어 (51 단어 ~ 100 단어)를 표시하고 싶습니다. 어떻게해야합니까?

+0

다음 50은 무엇을 의미합니까? "counter"와 같은 새 변수를 만들어 루프에 넣고 numberOfWords * 카운터를 곱하십시오. (첫 번째 시간은 1, 다음 시간은 2가 될 것입니다.) ... ... + numberOfWords * couner + "} ... –

+0

문제가 해결되면 대답을 수락하십시오! – Writwick

답변

2

동일한 정규 표현식을 사용할 수 있지만 처음 5o 단어 이후부터 시작하십시오. firstWords에 처음 50 단어가 있으므로이 50 단어 후에 시작해야합니다. 그래서 우리는 firstWords에서 가지고있는 50 개의 단어 다음에 결과의 부분 문자열을 취할 것입니다. firstWords.Length는 두 번째 5o 단어에 대한 정규식의 새로운 시작점이됩니다. 이처럼

+0

문자열 secondWords에 null 값이 있습니다. 이유가 무엇입니까? – user1509

+0

보유하고있는 문자열을 표시 할 수 있습니까? 결과 값을 나타낼 수 있습니까? – Adil

+0

문제는 처음 50 단어 뒤에 남은 문자열의 시작 부분에 공백 문자가 있습니다. 문 결과 결과 .Substring (firstWords.Length) 이제 공간을 제거했는데 작동 중입니다. – Adil

1

당신이 string의 여러 일치 시키려면

string secondWords = Regex.Match(result.Substring(firstWords.Length).Trim(), regexMatch).Value; 
,

코드 :

List<string> Words = new List<string>(); 
for(int i = 0; (result.Length - (i * numberOfWords)) < numberOfWords; i++) 
{ 
    Words.Add(Regex.Match(result.Substring(i * numberOfWords).Trim(), regexMatch).Value) 
} 

당신은 문자열에 존재하는 50 개 단어의 목록을 얻을! 그러나 string 끝 부분에 단어가 50 단어 미만이면 Words 목록에 단어가 추가되지 않습니다.

관련 문제