이것에 대한 이유가 있습니까? 빈 문자를 많이 사용해야하는 경우 빈 문자열을 많이 사용할 때와 같은 상황에 처하기 때문에 묻습니다.
편집 :이 사용법의 이유는 다음과 같습니다.
myString.Replace ('c', '')
따라서 myString에서 ‘c’의 모든 인스턴스를 제거하십시오.
답변
빈 문자와 같은 것은 없습니다. 가장 가까운 '\0'
것은 유니 코드 “널”문자입니다. 문자열 리터럴에 포함하거나 매우 쉽게 표현할 수 있다면 왜 별도의 필드를 원할까요? 마찬가지로는 “이 혼동하기 쉬운 ""
및 " "
인수가 적용되지 않습니다” '\0'
.
어디에서 사용하고 싶고 왜 더 좋을지에 대한 예를들 수 있다면 도움이 될 것입니다 …
답변
문자열과 달리 문자는 고정 된 크기를 가진 별개의 것입니다. 문자열은 실제로 문자 컨테이너입니다.
따라서 Char.Empty는 해당 맥락에서 실제로 의미가 없습니다. 문자가 있으면 비어 있지 않습니다.
답변
빈 캐릭터와 같은 것은 없습니다. 항상 무언가를 포함 합니다 . ‘\ 0’조차도 문자입니다.
답변
사용 Char.MinValue
‘\ 0’과 동일하게 작동합니다. 그러나와 같지 않도록주의하십시오 String.Empty
.
답변
답변
전체 문자열이 필요하지 않으면 지연된 실행을 활용할 수 있습니다.
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(), "");