문자열에서 처음 10자를 제거하는 방법은 무엇입니까?


92

문자열의 처음 10자를 무시하는 방법은 무엇입니까?

입력:

str = "hello world!";

산출:

d!

9
string.Substring (9); 여기서 9는 시작 인덱스입니다
Waqas

먼저 문자열에 10 자 이상이 있는지 확인해야합니다. 그렇지 않으면 예외가 발생합니다.
Jonathan

하위 문자열이 (startIndex, endindex)를 지원하지 않는 이유는 무엇입니까? 때마다 우리가 계산 길이가 ... :-(
Sangram Nandkhile

1
@Waqas : 실제로의 str.Substring (10), 문자열 시작 추출해되는 위치 인 파라미터
Razvan 보낸 비우스 팬더

답변:


92
str = "hello world!";
str.Substring(10, str.Length-10)

길이 검사를 수행해야합니다. 그렇지 않으면 오류가 발생합니다.


214

str = str.Remove(0,10); 처음 10자를 제거합니다.

또는

str = str.Substring(10); 11 번째 문자에서 시작하여 문자열 끝까지 부분 문자열을 만듭니다.

귀하의 목적을 위해 그들은 동일하게 작동해야합니다.


16

다른 사람들이 지적했듯이 부분 문자열은 아마도 원하는 것입니다. 하지만 믹스에 다른 옵션을 추가하기 위해 ...

string result = string.Join(string.Empty, str.Skip(10));

길이를 확인할 필요도 없습니다! :) 10 자 미만이면 빈 문자열을 얻습니다.


가독성을 높이려면 ""를 사용할 수 있습니다. 요즘은 string.Empty와 똑같이 컴파일됩니다.
PRMan

10

Substring 두 가지 오버로딩 방법이 있습니다.

public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.

public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.

따라서이 시나리오에서는 아래와 같은 첫 번째 방법을 사용할 수 있습니다.

var str = "hello world!";
str = str.Substring(10);

출력은 다음과 같습니다.

d!

길이를 확인하여 방어 코딩을 적용 할 수 있습니다.


5

SubstringstartIndex라는 매개 변수가 있습니다. 시작하려는 색인에 따라 설정하십시오.


3

아래 줄을 사용하여 문자를 제거 할 수 있습니다.

- 문자열 제거하기에 충분한 문자가 있는지 먼저 확인 과 같은,

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }


1

시작할 인덱스 인 단일 매개 변수를 사용하는 Substring 메서드를 사용할 수 있습니다 .

아래의 코드에서 길이가 원하는 시작 인덱스보다 작고 길이가 0 인 경우를 처리합니다.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

현재 문자열이 10 자 미만이면 문자열에서 마지막 문자를 반환합니다.
Răzvan Flavius ​​Panda 2011-08-25

1

에 대한:

var str = "hello world!";

처음 10 자없이 결과 문자열을 얻고 문자열 길이가 10 이하인 경우 빈 문자열을 얻으려면 다음을 사용할 수 있습니다.

var result = str.Length <= 10 ? "" : str.Substring(10);

또는

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

하나의 메소드 매개 변수 만 필요하므로 첫 번째 변형이 선호됩니다.


1

Substring메소드에 길이를 지정할 필요가 없습니다 . 따라서:

string s = hello world;
string p = s.Substring(3);

p 될거야:

"lo world".

입니다 당신이 수용해야 할 유일한 예외 ArgumentOutOfRangeException경우 startIndex이 인스턴스의 길이가 0보다 작거나 크다.


0

C # 8부터는 간단히 범위 연산자를 사용할 수 있습니다. 이러한 경우를 처리하는 더 효율적이고 더 나은 방법입니다.

string AnString = "Hello World!";
AnString = AnString[10..];

C# 8은 (는) 타겟팅 할 때 지원되지 않습니다 .NET Framework.
l33t

0

호출 SubString()은 새 문자열을 할당합니다. 최적의 성능을 위해 추가 할당을 피해야합니다. 시작 C# 7.2당신은을 활용할 수 스팬 패턴.

를 대상 .NET Framework으로하는 경우 System.Memory NuGet 패키지를 포함합니다 . 를 들어 .NET Core프로젝트를이 상자 밖으로 작동합니다.

static void Main(string[] args)
{
    var str = "hello world!";
    var span = str.AsSpan(10); // No allocation!

    // Outputs: d!
    foreach (var c in span)
    {
        Console.Write(c);
    }

    Console.WriteLine();
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.