Nice programing

C #으로 캐리지 리턴에서 문자열을 분할하는 방법은 무엇입니까?

nicepro 2020. 12. 28. 22:30
반응형

C #으로 캐리지 리턴에서 문자열을 분할하는 방법은 무엇입니까?


txbUserName이라는 여러 줄 텍스트 상자가있는 ASP.NET 페이지가 있습니다. 그런 다음 텍스트 상자 3 이름에 붙여 넣으면 세로로 정렬됩니다.

  • 제이슨
  • 아미
  • 여자 이름

캐리지 리턴이나 새 줄을 감지 할 때마다 이름을 가져 와서 별도의 문자열로 나눌 수 있기를 원합니다. 나는 배열이 갈 길이 될 것이라고 생각하고 있습니다. 어떤 아이디어?

감사합니다.


string[] result = input.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);

이것은 \ n 및 \ r \ n 줄 바꿈 유형을 모두 포함하고 사용자가 입력 할 수있는 빈 줄을 제거합니다.

다음 코드를 사용하여 테스트했습니다.

        string test = "PersonA\nPersonB\r\nPersonC\n";
        string[] result = test.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
        foreach (string s in result)
            Console.WriteLine(s);

그리고 "PersonA", "PersonB"및 "PersonC"항목이있는 세 개의 문자열 배열로 분할되어 올바르게 작동합니다.


어떤 교체 \r\n와 함께 \n, 다음 사용하여 분할을 \n:

string[] arr = txbUserName.Text.Replace("\r\n", "\n").Split("\n".ToCharArray());

String.Split 함수를 살펴보십시오 (정확한 구문이 확실하지 않고 IDE가 없음).

string[] names = txbUserName.Text.Split(Environment.Newline);

String.Split?

mystring.Split(new Char[] { '\n' })

using System.Text;
using System.Text.RegularExpressions;


 protected void btnAction_Click(object sender, EventArgs e)
    {
        string value = txtDetails.Text;
        char[] delimiter = new char[] { ';','[' };
        string[] parts = value.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < parts.Length; i++)
        {
            txtFName.Text = parts[0].ToString();
            txtLName.Text = parts[1].ToString();
            txtAge.Text = parts[2].ToString();
            txtDob.Text = parts[3].ToString();
        }
    }

이 시도:

message.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

다음과 같은 경우 작동합니다.

var message = "test 1\r\ntest 2";

또는

var message = "test 1\ntest 2";

또는

var message = "test 1\rtest 2";

무엇을하고 싶은지에 따라 다릅니다. 작은 목록에는 과도하지만 큰 문자열에는 메모리 효율성이 더 좋은 또 다른 옵션은 StringReader클래스를 사용하고 열거자를 사용하는 것입니다.

IEnumerable<string> GetNextString(string input)
{
    using (var sr = new StringReader(input))
    {
        string s;
        while ((s = sr.ReadLine()) != null)
        {
            yield return s;
        }
    }
}

이것은 \n\r\n줄 끝을 모두 지원합니다 . 그것이를 반환으로 IEnumerable당신은 그것을 처리 할 수 있습니다 foreach, 또는 표준 LINQ 확장의 (사용 ToList(), ToArray(), Where, 등).

예를 들어 foreach:

var ss = "Hello\nworld\r\ntwo bags\r\nsugar";
foreach (var s in GetNextString(ss))
{
    Console.WriteLine("==> {0}", s);
}

참조 URL : https://stackoverflow.com/questions/1814562/how-to-split-strings-on-carriage-return-with-c

반응형