programing

왜 차르가 없지?문자열처럼 비어 있습니다.비어있나요?

newnotes 2023. 4. 20. 22:43
반응형

왜 차르가 없지?문자열처럼 비어 있습니다.비어있나요?

이유가 있나요?빈 문자를 많이 사용해야 한다면 빈 문자열을 많이 사용할 때와 같은 상황이 되기 때문입니다.

편집: 이 사용 이유는 다음과 같습니다.

myString.Replace ('c', '')

myString에서 모든 c 인스턴스를 제거합니다.

★★★★★★★★★★★★★★★★★★★★★★★★★★ 것은 가가 the the the the the the입니다.'\0' 「 「null」문자.스트링 리터럴에 포함시키거나 직접 매우 쉽게 표현할 수 있는데 왜 별도의 필드를 원합니까?마찬가지로 '혼란하기 와 '혼란하기 쉽다'는."" ★★★★★★★★★★★★★★★★★」" "'는 '인수'에되지 않습니다'\0'.

어디에 사용하고 싶은지, 왜 그것이 좋다고 생각하는지를 예를 들어 주시면 도움이 될 것 같습니다.

쓰였습니다.myString.Replace ('c', '')따라서 모든 인스턴스를 삭제합니다.'c'myString에서 가져옵니다.

문자열에서 특정 문자를 삭제하려면 문자열 오버로드를 사용할 수 있습니다.

 myString = myString.Replace ("c", String.Empty);

당신의 진술

 myString.Replace ('c', '\0')

문자를 제거하지 않습니다.그냥 대체하면 됩니다.'\0'(End-Of-String, EOS), 양양양 、 ( ( ( ( ( ( 。은 EOS가 했을 때 될 수 에서는 EOS가 정지될 수 있습니다.NET net net net른 른른 른른 net net net net 。 좋다'\0'네, 네, 네.

문자는 문자열과 달리 크기가 고정된 개별적인 것입니다.문자열은 실제로 문자 컨테이너입니다.

그래서, Char.공허는 그런 맥락에서 의미가 없습니다.숯이 있으면 비어있지 않아요.

빈 글자는 없어요.항상 뭔가 들어있어요.심지어 '0'도 문자입니다.

Char.MinValue '\0과 같이 동작합니다.\0'은 '\0'으로 동작합니다. '아주머니'와는해 주세요.String.Empty.

null 가능한 문자를 사용할 수 있습니다.

char? c

문자열 전체가 필요하지 않은 경우 지연된 실행을 활용할 수 있습니다.

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
    {
        return originalString.Where(@char => @char != removingChar);
    }
}

여러 문자를 조합할 수도 있습니다.

string veryLongText = "abcdefghijk...";

IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChar('c')
            .RemoveChar('d')
            .Take(5);

...첫 번째 7글자만 평가됩니다.

편집: 또는 더 나은 방법:

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
        params char[] removingChars)
    {
        return originalString.Except(removingChars);
    }
}

및 그 용도:

        var veryLongText = "abcdefghijk...";
        IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChars('c', 'd')
            .Take(5)
            .ToArray(); //to prevent multiple execution of "RemoveChars"
myString = myString.Replace('c'.ToString(), "");

네, 이것은 글자를 삭제하는 데 있어서 특별히 우아한 것은 아닙니다.이후로입니다.Replace 메서드에 문자열 매개 변수가 사용되는 오버로드가 있습니다.그러나 이것은 캐리지 리턴, 라인 피드, 탭 등을 제거하는 데 도움이 됩니다.다음 예제에서는 탭 문자를 삭제합니다.

myString = myString.Replace('\t'.ToString(), "");

설정을 나타냅니다.char 쓰면 요.

default(char)

와 같다char.MinValue, 그것은 곧 '먹다'와 같습니다.\0네, 네, 네, 네.

로 '아까운데', '아까운데 없다'가 없어요.int.Empty 수 은 비워둘수 없습니다. 컨테이너는 비워 둘 수 있지만 스칼라 값은 비워 둘 수 없습니다.을 0(빈칸이 아님)을 합니다.'\0'만약 당신이 말한다면null , 을 사용합니다.null

char는 값 유형이기 때문에 값은 null일 수 없습니다(Nullable 컨테이너로 랩되지 않은 경우).

null일 수 없기 때문에에는 몇 가지 숫자 코드가 포함되어 있으며 각 코드는 몇 가지 문자에 매핑되어 있습니다.

첫 번째 질문에 대한 답변은 없습니다.그러나 특정 문제에 대해서는 문자 대신 문자열을 사용할 수 있습니다.

myString.Replace("c", "")

그렇게 하고 싶지 않은 이유가 있나요?

String의 Replace(String, String) 오버로드 문서를 참조해 주십시오.두 번째 인수가 다음 인수의 경우 주석 섹션에서 확인할 수 있습니다.null이치노 그냥 ''를 쓰면 '''가 돼요''는''가 됩니다.myString = myString.Replace("c", null); 삭제가 .c현악기 안에.

삭제할 문자를 제외하고 문자열 문자를 문자별로 재구성할 수도 있습니다.

이를 위한 확장 방법은 다음과 같습니다.

    static public string RemoveAny(this string s, string charsToRemove)
    {
        var result = "";
        foreach (var c in s)
            if (charsToRemove.Contains(c))
                continue;
            else
                result += c;

        return result;
    }

매끄럽거나 화려하지는 않지만 잘 작동합니다.

다음과 같이 사용:

string newString = "My_String".RemoveAny("_"); //yields "MyString"

꽤 오래된 것은 알지만, 최근 파일 이름을 안전하게 하기 위해 여러 번 교체해야 하는 문제가 발생했습니다.먼저, 최신 정보입니다.NET 문자열Replace 함수 null은 빈 문자와 동일합니다.그렇다고는 해도, 에는 없는 것이 있습니다.넷은 어레이 내의 임의의 문자를 원하는 문자로 대체하는 단순한 치환입니다.아래 코드를 자유롭게 참조해 주십시오(테스트를 위해 LinqPad에서 실행).

// LinqPad .ReplaceAll and SafeFileName
void Main()
{

    ("a:B:C").Replace(":", "_").Dump();                     // can only replace 1 character for one character => a_B_C
    ("a:B:C").Replace(":", null).Dump();                    // null replaces with empty => aBC
    ("a:B*C").Replace(":", null).Replace("*",null).Dump();  // Have to chain for multiples 

    // Need a ReplaceAll, so I don't have to chain calls


    ("abc/123.txt").SafeFileName().Dump();
    ("abc/1/2/3.txt").SafeFileName().Dump();
    ("a:bc/1/2/3.txt").SafeFileName().Dump();
    ("a:bc/1/2/3.txt").SafeFileName('_').Dump();
    //("abc/123").SafeFileName(':').Dump(); // Throws exception as expected

}


static class StringExtensions
{

    public static string SafeFileName(this string value, char? replacement = null)
    {
        return value.ReplaceAll(replacement, ':','*','?','"','<','>', '|', '/', '\\');
    }

    public static string ReplaceAll(this string value, char? replacement, params char[] charsToGo){

        if(replacement.HasValue == false){
                return string.Join("", value.AsEnumerable().Where(x => charsToGo.Contains(x) == false));
        }
        else{

            if(charsToGo.Contains(replacement.Value)){
                throw new ArgumentException(string.Format("Replacement '{0}' is invalid.  ", replacement), "replacement");
            }

            return string.Join("", value.AsEnumerable().Select(x => charsToGo.Contains(x) == true ? replacement : x));
        }

    }

}

특정 조건을 만족하는 문자를 삭제할 경우 다음을 사용할 수 있습니다.

string s = "SoMEthInG";
s = new string(s.Where(c => char.IsUpper(c)).ToArray());

(문자열에는 대문자만 남습니다).

, 트, 트, 사, 사, 사, 습, 습, 습, 습, 습, 습, 습, 습, 습, 습, 습, in, in, in, in,IEnumerable<char>를 변경하여 위와 같이 문자열로 되돌립니다.

하면 표현으로 특정 수만 아니라 람다 표현을 .c => c != 't'.

C# 언어의 경우, 다음과 같은 것은 그다지 의미가 없을 수 있습니다.그리고 이것은 질문에 대한 직접적인 답이 아닙니다.하지만 다음은 제 비즈니스 시나리오 중 하나에서 수행한 작업입니다.

char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
    Console.Write("Success");
}

null그리고.white space제 프로젝트에서 다른 비즈니스 흐름이 있었습니다.데이터베이스에 삽입하는 동안 삽입해야 합니다.empty string공백인 경우 데이터베이스로 이동합니다.

문자열의 빈 문자를 제거하려면 다음 작업을 수행합니다.원하는 데이터 유형 표현으로 변환하기만 하면 됩니다.

private void button1_Click(object sender, EventArgs e)
{

    Int32 i;

    String name;

    Int32[] array_number = new int[100];

    name = "1 3  5  17   8    9    6";

    name = name.Replace(' ', 'x');

    char[] chr = name.ToCharArray();


    for (i = 0; i < name.Length; i++)
    {
        if ((chr[i] != 'x'))
        {
            array_number[i] = Convert.ToInt32(chr[i].ToString());
            MessageBox.Show(array_number[i].ToString());
        }
    }
}

방법은 다음과 같습니다.myString치환(')'ToString(), "");

Microsoft가 파일 시작(최소한 XML)에 추가하는 마법의 문자인 BOM은 어떻습니까?

public static string QuitEscChars(this string s) 
{
    return s.Replace(((char)27).ToString(), "");
}

사용하다

myString.Replace ("c", "")

문자열에서 문자를 제거하는 가장 쉬운 방법은 잘라내는 것입니다.

cl = cl.Trim(' ');

문자열의 모든 공백을 제거합니다.

언급URL : https://stackoverflow.com/questions/3670505/why-is-there-no-char-empty-like-string-empty

반응형