Existe uma razão para isso? Estou perguntando, porque se você precisasse usar muitos caracteres vazios, entraria na mesma situação que usaria quando usasse muitas strings vazias.
Edit: O motivo desse uso foi o seguinte:
myString.Replace ('c', '')
Portanto, remova todas as instâncias de 'c's do myString.
RemoveAll(this string s, params char[] toRemove)
? A intenção será claramente comunicada e você não correrá o risco de digitar algo errado.""
cria um objeto : Não, não.Respostas:
Não existe um char vazio. O mais próximo que você pode chegar é
'\0'
o caractere "nulo" Unicode. Dado que você pode incorporar isso em literais de string ou expressá-lo por conta própria com muita facilidade, por que você deseja um campo separado para ele? Da mesma forma, os argumentos " é fácil confundir""
e" "
" não se aplicam'\0'
.Se você pudesse dar um exemplo de onde você gostaria de usá-lo e por que você acha que seria melhor, isso pode ajudar ...
fonte
Int32.Zero
, você usaria isso em vez do literal 0? Se não, qual é a diferença aqui?Um char, diferente de uma string, é uma coisa discreta com um tamanho fixo. Uma string é realmente um contêiner de caracteres.
Portanto, Char.Empty realmente não faz sentido nesse contexto. Se você tem um char, ele não está vazio.
fonte
Não existe um personagem vazio. Sempre contém algo . Mesmo '\ 0' é um personagem.
fonte
Use o
Char.MinValue
que funciona da mesma forma que '\ 0'. Mas tenha cuidado, não é o mesmo queString.Empty
.fonte
Você pode usar caracteres anuláveis .
fonte
Se você não precisar da string inteira, poderá tirar proveito da execução atrasada:
Você pode até combinar vários caracteres ...
... e apenas os 7 primeiros caracteres serão avaliados :)
EDIT: ou, melhor ainda:
e seu uso:
fonte
OK, isso não é particularmente elegante para remover letras, pois o método .Replace tem uma sobrecarga que aceita parâmetros de string. Mas isso funciona para remover retornos de carro, alimentações de linha, guias, etc. Este exemplo remove caracteres de tabulação:
fonte
a mesma razão que não existe
int.Empty
. Os recipientes podem estar vazios. Valores escalares não podem ser. Se você quer dizer 0 (que não está vazio), use'\0'
. Se você quer dizernull
, usenull
:)fonte
Um caractere é um tipo de valor, portanto, seu valor não pode ser nulo. (A menos que esteja embrulhado em um recipiente Anulável).
Como não pode ser nulo, in contém algum código numérico e cada código é mapeado para algum caractere.
fonte
Não é uma resposta para sua pergunta, mas para indicar um padrão,
char
você pode usar apenasque é o mesmo
char.MinValue
que, por sua vez, é o mesmo que\0
. Não se deve usar isso para algo como uma string vazia.fonte
Não responde sua primeira pergunta - mas, para o problema específico que você teve, você pode simplesmente usar strings em vez de caracteres, certo ?:
Existe uma razão para você não querer fazer isso?
fonte
Você também pode reconstruir sua sequência de caracteres por caractere, excluindo os caracteres dos quais deseja se livrar.
Aqui está um método de extensão para fazer isso:
Não é liso ou chique, mas funciona bem.
Use assim:
fonte
StringBuilder
pararesult
. Por que não embrulharreturn s.Replace(charsToRemove,"");
?Se você deseja remover caracteres que atendem a uma condição específica, você pode usar o seguinte:
(Isso deixará apenas os caracteres maiúsculos na string.)
Em outras palavras, você pode "usar" a string como uma
IEnumerable<char>
, fazer alterações e depois convertê-la novamente em uma string, como mostrado acima.Novamente, isso permite não só remover um caractere específico por causa da expressão lambda, embora você pode fazer isso, se você alterar a expressão lambda assim:
c => c != 't'
.fonte
E quanto à BOM , o personagem mágico que a Microsoft adiciona ao início dos arquivos (pelo menos XML)?
fonte
myString.Replace ('c', '')
poderia ser alcançado pormyString.Replace ('c', UTF_BOM)
. Então eu diria que a resposta é "como não ...".se você quiser eliminar o caractere vazio na string, o seguinte funcionará, apenas converta para qualquer representação de tipo de dados desejada. obrigado,
fonte
Em termos de linguagem C #, o seguinte pode não fazer muito sentido. E essa não é uma resposta direta à pergunta. Mas seguir é o que eu fiz em um dos meus cenários de negócios
O
null
ewhite space
teve diferentes fluxos de negócios no meu projeto. Ao inserir no banco de dados, preciso inseriempty string
-lo no banco de dados, se houver espaço em branco.fonte
Sei que este é bastante antigo, mas recentemente encontrei um problema ao fazer várias substituições para tornar um nome de arquivo seguro. Primeiro, na string .NET mais recente. A função null é equivalente a um caractere vazio. Dito isto, o que está faltando no .Net é uma simples substituição de tudo o que substituirá qualquer caractere em uma matriz pelo caractere desejado. Por favor, sinta-se à vontade para referenciar o código abaixo (executado no LinqPad para teste).
fonte
usar
fonte
A maneira mais fácil de remover um caractere da string é cortá-lo
cl = cl.Trim(' ');
Remove todos os espaços em uma sequência
fonte