수색…


특정 문자로 문자열 분리하기

string helloWorld = "hello world, how is it going?";
string[] parts1 = helloWorld.Split(',');

//parts1: ["hello world", " how is it going?"]

string[] parts2 = helloWorld.Split(' ');

//parts2: ["hello", "world,", "how", "is", "it", "going?"]

주어진 문자열의 하위 문자열 얻기

string helloWorld = "Hello World!";
string world = helloWorld.Substring(6); //world = "World!"
string hello = helloWorld.Substring(0,5); // hello = "Hello"

Substring 은 지정된 인덱스에서 또는 두 인덱스 사이에서 Substring 반환합니다 (둘 다 포함).

문자열이 주어진 시퀀스로 시작하는지 확인하십시오.

string HelloWorld = "Hello World";
HelloWorld.StartsWith("Hello"); // true
HelloWorld.StartsWith("Foo"); // false

문자열 내에서 문자열 찾기

System.String.Contains 를 사용하면 문자열 내에 특정 문자열이 있는지 확인할 수 있습니다. 이 메소드는 부울을 반환하고 문자열이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

string s = "Hello World";
bool stringExists = s.Contains("ello");  //stringExists =true as the string contains the substring 

문자열 시작 및 / 또는 끝에서 원하지 않는 문자 자르기.

String.Trim()

string x = "   Hello World!    ";
string y = x.Trim(); // "Hello World!"

string q = "{(Hi!*";
string r = q.Trim( '(', '*', '{' ); // "Hi!"

String.TrimStart()String.TrimEnd()

string q = "{(Hi*";
string r = q.TrimStart( '{' ); // "(Hi*"
string s = q.TrimEnd( '*' );   // "{(Hi" 

문자열 서식 지정

String.Format() 메서드를 사용하여 문자열의 하나 이상의 항목을 지정된 객체의 문자열 표현으로 바꿉니다.

String.Format("Hello {0} Foo {1}", "World", "Bar") //Hello World Foo Bar

문자열 배열을 새 배열에 조인하기

var parts = new[] { "Foo", "Bar", "Fizz", "Buzz"};
var joined = string.Join(", ", parts);

//joined = "Foo, Bar, Fizz, Buzz"

문자열을 고정 길이로 채 웁니다.

string s = "Foo";
string paddedLeft = s.PadLeft(5);        // paddedLeft = "  Foo" (pads with spaces by default)
string paddedRight = s.PadRight(6, '+'); // paddedRight = "Foo+++"
string noPadded = s.PadLeft(2);          // noPadded = "Foo" (original string is never shortened)

Array로부터 캐릭터 라인을 구축합니다.

String.Join 메서드는 문자열 / 문자 또는 문자열 목록에서 문자열을 구성하는 데 도움이 String.Join . 이 메서드는 두 개의 매개 변수를받습니다. 첫 번째 요소는 배열의 각 요소를 구분하는 데 도움이되는 구분 기호 또는 구분 기호입니다. 두 번째 매개 변수는 Array 자체입니다.

char array 문자열 :

string delimiter=",";
char[] charArray = new[] { 'a', 'b', 'c' };
string inputString = String.Join(delimiter, charArray);

출력 : a,b,c ""delimiter 를 변경하면 출력이 abc 됩니다.

List of char 에서 문자열 :

string delimiter = "|";
List<char> charList = new List<char>() { 'a', 'b', 'c' };
string inputString = String.Join(delimiter, charList);

출력 : a|b|c

문자열 List of Strings :

string delimiter = " ";
List<string> stringList = new List<string>() { "Ram", "is", "a","boy" };
string inputString = String.Join(delimiter, stringList);

출력 : Ram is a boy

문자열 array of strings :

string delimiter = "_";
string[] stringArray = new [] { "Ram", "is", "a","boy" };
string inputString = String.Join(delimiter, stringArray);

출력 : Ram_is_a_boy

ToString을 사용하여 서식 지정

일반적으로 우리는 형식을 지정하기 위해 String.Format 메서드를 사용하고, .ToString 은 다른 형식을 문자열로 변환하는 데 주로 사용됩니다. 변환이 진행되는 동안 ToString 메서드와 함께 형식을 지정할 수 있으므로 추가 서식을 피할 수 있습니다. 다른 유형으로 어떻게 작동하는지 설명해주십시오.

형식화 된 문자열에 대한 정수 :

int intValue = 10;
string zeroPaddedInteger = intValue.ToString("000"); // Output will be "010"
string customFormat = intValue.ToString("Input value is 0"); // output will be   "Input value is 10" 

두 번 형식화 된 문자열 :

double doubleValue = 10.456;
string roundedDouble = doubleValue.ToString("0.00"); // output 10.46
string integerPart = doubleValue.ToString("00");    // output 10
string customFormat = doubleValue.ToString("Input value is 0.0");  // Input value is 10.5

ToString을 사용하여 DateTime 서식 지정

DateTime currentDate = DateTime.Now; //  {7/21/2016 7:23:15 PM}
string dateTimeString = currentDate.ToString("dd-MM-yyyy HH:mm:ss"); // "21-07-2016 19:23:15"
string dateOnlyString = currentDate.ToString("dd-MM-yyyy"); // "21-07-2016"
string dateWithMonthInWords = currentDate.ToString("dd-MMMM-yyyy HH:mm:ss"); // "21-July-2016 19:23:15"

문자열의 오른쪽에서 x 문자 가져 오기

Visual Basic에는 문자열의 왼쪽, 오른쪽 및 가운데에서 문자를 반환하는 Left, Right 및 Mid 함수가 있습니다. 이러한 메서드는 C #에는 없지만 Substring() 하여 구현할 수 있습니다. 다음과 같은 확장 메소드로 구현할 수 있습니다.

   public static class StringExtensions
   {
      /// <summary>
      /// VB Left function
      /// </summary>
      /// <param name="stringparam"></param>
      /// <param name="numchars"></param>
      /// <returns>Left-most numchars characters</returns>
      public static string Left( this string stringparam, int numchars )
      {
         // Handle possible Null or numeric stringparam being passed
         stringparam += string.Empty;
    
         // Handle possible negative numchars being passed
         numchars = Math.Abs( numchars );
    
         // Validate numchars parameter        
         if (numchars > stringparam.Length)
            numchars = stringparam.Length;
    
         return stringparam.Substring( 0, numchars );
      }
    
      /// <summary>
      /// VB Right function
      /// </summary>
      /// <param name="stringparam"></param>
      /// <param name="numchars"></param>
      /// <returns>Right-most numchars characters</returns>
      public static string Right( this string stringparam, int numchars )
      {
         // Handle possible Null or numeric stringparam being passed
         stringparam += string.Empty;
    
         // Handle possible negative numchars being passed
         numchars = Math.Abs( numchars );
    
         // Validate numchars parameter        
         if (numchars > stringparam.Length)
            numchars = stringparam.Length;
    
         return stringparam.Substring( stringparam.Length - numchars );
      }
    
      /// <summary>
      /// VB Mid function - to end of string
      /// </summary>
      /// <param name="stringparam"></param>
      /// <param name="startIndex">VB-Style startindex, 1st char startindex = 1</param>
      /// <returns>Balance of string beginning at startindex character</returns>
      public static string Mid( this string stringparam, int startindex )
      {
         // Handle possible Null or numeric stringparam being passed
         stringparam += string.Empty;
    
         // Handle possible negative startindex being passed
         startindex = Math.Abs( startindex );
    
         // Validate numchars parameter        
         if (startindex > stringparam.Length)
            startindex = stringparam.Length;
         
         // C# strings are zero-based, convert passed startindex
         return stringparam.Substring( startindex - 1 );
      }
    
      /// <summary>
      /// VB Mid function - for number of characters
      /// </summary>
      /// <param name="stringparam"></param>
      /// <param name="startIndex">VB-Style startindex, 1st char startindex = 1</param>
      /// <param name="numchars">number of characters to return</param>
      /// <returns>Balance of string beginning at startindex character</returns>
      public static string Mid( this string stringparam, int startindex, int numchars)
      {
         // Handle possible Null or numeric stringparam being passed
         stringparam += string.Empty;
    
         // Handle possible negative startindex being passed
         startindex = Math.Abs( startindex );
    
         // Handle possible negative numchars being passed
         numchars = Math.Abs( numchars );
    
         // Validate numchars parameter        
         if (startindex > stringparam.Length)
            startindex = stringparam.Length;
    
         // C# strings are zero-based, convert passed startindex
         return stringparam.Substring( startindex - 1, numchars );

       }
    }

이 확장 방법은 다음과 같이 사용할 수 있습니다.

string myLongString = "Hello World!";
string myShortString = myLongString.Right(6);  // "World!"
string myLeftString = myLongString.Left(5);    // "Hello"
string myMidString1 = myLongString.Left(4);    // "lo World"
string myMidString2 = myLongString.Left(2,3);    // "ell"

String.IsNullOrEmpty () 및 String.IsNullOrWhiteSpace ()를 사용하여 빈 문자열을 확인합니다.

string nullString = null;
string emptyString = "";
string whitespaceString = "    ";
string tabString = "\t";
string newlineString = "\n";
string nonEmptyString = "abc123";

bool result;

result = String.IsNullOrEmpty(nullString);            // true
result = String.IsNullOrEmpty(emptyString);           // true
result = String.IsNullOrEmpty(whitespaceString);      // false
result = String.IsNullOrEmpty(tabString);             // false
result = String.IsNullOrEmpty(newlineString);         // false
result = String.IsNullOrEmpty(nonEmptyString);        // false

result = String.IsNullOrWhiteSpace(nullString);       // true
result = String.IsNullOrWhiteSpace(emptyString);      // true
result = String.IsNullOrWhiteSpace(tabString);        // true
result = String.IsNullOrWhiteSpace(newlineString);    // true
result = String.IsNullOrWhiteSpace(whitespaceString); // true
result = String.IsNullOrWhiteSpace(nonEmptyString);   // false

특정 인덱스에서 문자 가져 오기 및 문자열 열거

Substring 메서드를 사용하면 주어진 위치에서 문자열의 문자를 원하는만큼 가져올 수 있습니다. 그러나 단일 문자 만 원할 경우 배열과 마찬가지로 주어진 색인에서 단일 문자를 가져 오기 위해 문자열 인덱서를 사용할 수 있습니다.

string s = "hello";
char c = s[1]; //Returns 'e'

string 형을 돌려주는 Substring 메소드와는 Substring , 반환 값의 형태는 char 입니다.

또한 인덱서를 사용하여 문자열의 문자를 반복 할 수 있습니다.

string s = "hello";
foreach (char c in s)
    Console.WriteLine(c);
/********* This will print each character on a new line:
h
e
l
l
o
**********/

십진수를 2 진수, 8 진수 및 16 진수 형식으로 변환

  1. 10 진수를 2 진수 형식으로 변환하려면 밑 2를 사용하십시오.

    Int32 Number = 15;
    Console.WriteLine(Convert.ToString(Number, 2));  //OUTPUT : 1111
    
  2. 10 진수를 8 진수 형식으로 변환하려면 기본 8을 사용하십시오.

    int Number = 15;
    Console.WriteLine(Convert.ToString(Number, 8));  //OUTPUT : 17
    
  3. 10 진수를 16 진수 형식으로 변환하려면 기본 16

    var Number = 15;
    Console.WriteLine(Convert.ToString(Number, 16));  //OUTPUT : f
    

문자열을 다른 문자열로 나누기

string str = "this--is--a--complete--sentence";
string[] tokens = str.Split(new[] { "--" }, StringSplitOptions.None);

결과:

[ "this", "is", "a", "complete", "sentence"]

문자열을 올바르게 뒤집기

사람들이 문자열을 뒤집어 야 할 때 대부분 다음과 같이합니다.

char[] a = s.ToCharArray();
System.Array.Reverse(a);
string r = new string(a);

그러나 이러한 사람들이 인식하지 못하는 것은 실제로 이것이 잘못되었다는 것입니다.
그리고 누락 된 NULL 검사 때문에 나는 의미하지는 않습니다.

Glyph / GraphemeCluster는 여러 코드 포인트 (일명 문자)로 구성 될 수 있기 때문에 실제로 잘못되었습니다.

왜 이렇게되는지 보려면 먼저 "캐릭터"라는 용어가 실제로 의미하는 사실을 알고 있어야합니다.

참고:

캐릭터는 많은 것을 의미 할 수있는 것보다 과부하 된 용어입니다.

코드 포인트는 정보의 원자 단위입니다. 텍스트는 일련의 코드 포인트입니다. 각 코드 포인트는 유니 코드 표준에 의해 주어진 숫자입니다.

grapheme은 독자가 서체 시스템의 단일 요소로 인식하는 단일 그래픽 단위로 표시되는 하나 이상의 코드 포인트 시퀀스입니다. 예를 들어, a와 ä는 둘 다 graphemes이지만 여러 개의 코드 포인트로 구성 될 수 있습니다 (예 : ä는 두 개의 코드 포인트가 될 수 있습니다. 하나는 기본 문자 a에 이어 하나는 diaresis이고 다른 하나는 기존의 단일 코드입니다) 이 글자를 나타내는 점). 일부 코드 포인트는 어떤 제자 (예 : 제로 너비 비 연결자 또는 방향 재 지정)의 일부가 아닙니다.

글립 문자는 일반적으로 글꼴 (글립 문자 모음)에 저장되는 이미지로, 글자체 또는 그 일부를 나타내는 데 사용됩니다. 폰트는, 복수의 그리 후를 단일의 표현으로 구성 할 수 있습니다. 예를 들어, 위의 코드가 단일의 코드 포인트 인 경우, 폰트는 그것을 공간 상으로는 2 개의 분리 된 그리 후로서 렌더링하는 경우가 있습니다. OTF의 경우 글꼴의 GSUB 및 GPOS 테이블에는이 작업을 수행하기위한 대체 및 위치 정보가 포함됩니다. 글꼴에는 동일한 글자체에 대해 여러 대체 글리프가 포함될 수 있습니다.

그래서 C #에서 문자는 실제로 CodePoint입니다.

즉, Les Misérables 와 같은 유효한 문자열을 역순으로 처리하면 다음과 같이 보일 수 있습니다.

string s = "Les Mise\u0301rables";

일련의 문자로 다음을 얻을 수 있습니다.

셀 세이

보시다시피 악센트는 e 문자 대신 R 문자에 있습니다.
두 번 모두 문자 배열을 역순으로하면 string.reverse.reverse가 원래 문자열을 반환하지만이 종류의 역전은 원래 문자열의 역순이 아닙니다.

각 GraphemeCluster 만 리버스해야한다.
따라서 올바르게 수행되면 다음과 같이 문자열을 뒤집습니다.

    private static System.Collections.Generic.List<string> GraphemeClusters(string s)
    {
        System.Collections.Generic.List<string> ls = new System.Collections.Generic.List<string>();

        System.Globalization.TextElementEnumerator enumerator = System.Globalization.StringInfo.GetTextElementEnumerator(s);
        while (enumerator.MoveNext())
        {
            ls.Add((string)enumerator.Current);
        }

        return ls;
    }


    // this 
    private static string ReverseGraphemeClusters(string s)
    {
        if(string.IsNullOrEmpty(s) || s.Length == 1)
             return s;
        
        System.Collections.Generic.List<string> ls = GraphemeClusters(s);
        ls.Reverse();

        return string.Join("", ls.ToArray());
    }

    public static void TestMe()
    {
        string s = "Les Mise\u0301rables";
        // s = "noël";
        string r = ReverseGraphemeClusters(s);

        // This would be wrong:
        // char[] a = s.ToCharArray();
        // System.Array.Reverse(a);
        // string r = new string(a);

        System.Console.WriteLine(r);
    }

그리고 - 오, 기쁨 - 당신이 올바르게 이것을하면 아시아 / 동남 아시아 / 동아시아 언어 (및 프랑스어 / 스웨덴어 / 노르웨이어 등)에서도 작동 할 것입니다.

문자열 내의 문자열 바꾸기

System.String.Replace 메서드를 사용하면 문자열의 일부를 다른 문자열로 바꿀 수 있습니다.

string s = "Hello World";
 s = s.Replace("World", "Universe"); // s = "Hello Universe"

검색 문자열의 모든 항목이 대체됩니다.

이 메서드는 String.Empty 필드를 사용하여 문자열의 일부를 제거하는 데에도 사용할 수 있습니다.

string s = "Hello World";
s = s.Replace("ell", String.Empty); // s = "Ho World"

String 내의 문자의 대 / 소문자 변경

System.String 클래스는 문자열의 대문자와 소문자를 서로 변환하는 여러 가지 메서드를 지원합니다.

참고 : 이 방법의 불변 버전을 사용하는 이유는 예기치 않은 문화권 문자가 생성되는 것을 방지하기 위해서입니다. 이에 대해서는 여기에서 자세히 설명 합니다.

예:

string s = "My String";
s = s.ToLowerInvariant(); // "my string"
s = s.ToUpperInvariant(); // "MY STRING"

그에 따라 String.ToLower (CultureInfo)String.ToUpper (CultureInfo) 메서드를 사용하여 소문자 및 대문자로 변환 할 때 특정 문화권 을 지정하도록 선택할 있습니다.

문자열 배열을 단일 문자열로 연결

System.String.Join 메서드를 사용하면 각 요소 사이에 지정된 구분 기호를 사용하여 문자열 배열의 모든 요소를 ​​연결할 수 있습니다.

string[] words = {"One", "Two", "Three", "Four"};
string singleString = String.Join(",", words); // singleString = "One,Two,Three,Four"

문자열 연결

문자열 연결은 System.String.Concat 메서드를 사용하거나 + 연산자를 사용하여 훨씬 쉽게 수행 할 수 있습니다.

string first = "Hello ";
string second = "World";

string concat = first + second; // concat = "Hello World"
concat = String.Concat(first, second); // concat = "Hello World"

C # 6에서는 다음과 같이 할 수 있습니다.

string concat = $"{first},{second}";


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow