2017-12-26 19 views
-1

표시하기 전에 문자열 작성기에 숫자 (1,2,3)를 추가하고 싶습니다. 스트링 빌더 2가 포함 된 경우 는이 1) 라인 텍스트 2) 라인 텍스트와 같은 출력 등문자열 작성기의 길이를 기반으로 문자열 빌더에 텍스트/숫자를 추가하십시오.

StringBuilder abc = new StringBuilder(); 
abc.Append("Hi."); 
Fun(2, abc); 
void Fun(int i, StringBuilder abc) 
{ 
    if (i>0) 
    abc.Append("its me."); 
} 

// 확인하기 위해 여기에 몇 가지 코드를 추가에 있어야합니다 경우 같은 (abc.length> 0)// abc의 행에 1,2,3 ...을 추가해야합니다. Console.WriteLine (abc.ToString());

제가

1)과 같은 하이 출력을 필요로한다. 2) 나.

+0

나는 C#과 많이 친숙하지 않다 ... 나는 주로 파이썬으로 작업한다. 그래서 질문을 게시했다. – Harry

답변

2

StringBuilder과 함께하는 것은 엄청나게 어려울 것입니다. 색인 구문 분석은 엄청나게 어려울 것입니다. 같은 것을 이루기 위해 List<string>을 사용했습니다.

출력을 제공
List<string> list = new List<string>(); 
list.Add("Hi"); 
list.Add("Its me!"); 

string s = String.Join(" ", list.Select(x => (list.IndexOf(x) + 1).ToString() + ")" + x)); 

Console.WriteLine(s); 

1) 안녕 2) 그 날!

+0

당신의 도움에 감사한다. 나는 stringbuilder를 사용해야한다. – Harry

+2

왜, 당신은 'StringBuilder'. 문맥을 알지 못하지만, 여러분은'StringBuilder'를 'sb.ToString()을 사용하여'List '로 변환 할 수 있습니다. Split ('') .ToList();' –

+0

https : //pastebin.com/KrMP61Qb – Harry

3

논리를 다른 클래스로 캡슐화하고 해당 문자열에서 StringBuilder를 사용할 수 있습니다.

public class ExtendedStringBuilder 
{ 
    private StringBuilder _sb; 
    private int _callNumber; 
    public ExtendedStringBuilder() 
    { 
     _sb = new StringBuilder(); 
     _callNumber = 0; 
    } 

    public void Append(string nextString) 
    { 
     _sb.AppendFormat("{0} {1}", ++_callNumber, nextString); 
    } 

    public override string ToString() 
    { 
     return _sb.ToString(); 
    } 
} 

이 경우 int 값을 저장할 필요가 없습니다.

static void Main(string[] args) 
{ 
    var esb = new ExtendedStringBuilder(); 

    esb.Append("Hi."); 
    esb.Append("its me."); 
    Console.WriteLine(esb.ToString()); 
    Console.ReadLine(); 
} 
0

나는 모든 항목 ("Hi.""its me.") 넣어 StringBuilder 제거 Linq에을 사용하는 것이 좋습니다 : StringBuilder수정 (List<string> 대신

using System.Linq; 

    ... 

    // Or List<string> 
    string[] items = new string[] { 
    "Hi.", 
    "its me." 
    }; 

    string result = string.Join(" ", items 
    .Select((item, index) => $"{index + 1}){item}")); 

귀하의 코드이 샘플입니다)

List<string> abc = new List<string>(); // List<string>, not StringBuider 

    abc.Add("Hi."); 

    Fun(2, abc); 

    ... 

    void Fun(int i, IList<string> abc) { 
    if (abc.Any()) 
     abc.Add("its me."); 
    } 

    ... 

    Console.WriteLine(string.Join(" ", abc 
    .Select((item, index) => $"{index + 1}){item}")));