2016-11-05 3 views
0

길이에 따라 두 개의 문자 시퀀스를 만들려고했습니다. 나는 비슷한 질문을 파이썬 Strings of two letters and fixed length에서 물어 보았다.하지만 약간 다르다.Linq를 사용하여 길이가 10 인 두 개의 문자 시퀀스를 생성하십시오.

[편집]

예 abababababa 내가이 빠른 솔루션을 함께했다 11

A, B, 고정 길이의 문자열 순서입니다하지만 난이 일을 훨씬 현명한 방법이 생각합니다. 고정 길이는 짝수 또는 홀수 일 수 있습니다. 예 :

string b =String.Concat(Enumerable.Repeat(String.Concat("a", "b"), 11)); 
Console.WriteLine(b.Substring(0,11)); 

어떻게해야합니까?

+0

난 당신이 요구하는지 이해가 안 돼요. 문자열은 항상 두 글자를 교대로 사용하기로되어 있습니까? 출력 길이가 항상 짝수이기 때문에 두 문자가 항상 같은 횟수만큼 나타납니다. 왜 부분 문자열 (한 쌍의 문자)을 10 대신 5 번만 반복 할 수 없습니까? 이게 정말 LINQ일까요? –

+0

가끔 출력 길이가 홀수입니다. Good Spot on the 5 times ish – Tola

답변

2

"최고"아마도 char[] 또는 StringBuilder을 가진 것 for 루프, 그러나 여기 몇 짧은 가지 방법은 :

string a = new string('a', 11).Replace("aa", "ab"); 

string b = string.Concat(Enumerable.Range(0, 11).Select(i => "ab"[i & 1])); 

string c = new StringBuilder().Insert(0, "ab", ((11 + 1)/2)).ToString(0, 11); 
0

원하는 것은 무엇입니까? 메신저 혼란.

string b = String.Concat(Enumerable.Repeat(String.Concat("a", "b"), 5));

+0

고정 길이가 짝수가 아닌 경우에는 작동하지 않습니다. – Tola

2

나는 아직도 내가 당신이 요구하는지 이해하지 100 % 확신합니다.

string Repeat(string input, int length) 
{ 
    return new string(
     Enumerable.Range(0, length).Select(i => input[i % length]).ToArray()); 
} 

같이 호출 : 그러나, 지금까지 작성한 내용에 따라, 나는 이것이 당신이 원하는 것을 할 것 같아

string result = Repeat("ab", 10); 
관련 문제