Why is there no Char.Empty like String.Empty?
Is there a reason for this? I am asking because if you needed to use lots of empty chars then you get into the same situation as you would when you use lots of empty strings.
Edit: The reason for this usage was this:
myString.Replace ('c', '')
So remove all instances of 'c's from myString.
c# .net string char bcl
|
show 1 more comment
Is there a reason for this? I am asking because if you needed to use lots of empty chars then you get into the same situation as you would when you use lots of empty strings.
Edit: The reason for this usage was this:
myString.Replace ('c', '')
So remove all instances of 'c's from myString.
c# .net string char bcl
1
Yeah I used that word for lack of a better word. i.e. the recommended way of using String.Empty instead of "".
– Joan Venge
Sep 8 '10 at 17:51
Thanks, do you know why it's not recommended anymore? Is it because of the compiler does it for you?
– Joan Venge
Sep 8 '10 at 18:02
3
If you're concerned about accidentally mistyping '' sometimes, why not just simply wrap the functionality in an extension method along the lines ofRemoveAll(this string s, params char toRemove)
? The intent will be clearly communicated and you will not risk mistyping anything.
– bzlm
Oct 5 '10 at 11:38
11
@Henk - The only reason I use string.Empty is because I find the null object provided by Empty expresses intent better than empty quotes. Empty quotes could result from a merge problem, or a bungled thought, or it could be the actual intent of that code, whereas Empty explicitly tells me that the developer intended for that string not to have data.
– Ritch Melton
May 21 '11 at 0:33
3
There is a difference between "" and the string.Empty. Not that anyone care, really, but "" creates an object, whereas string.Empty makes use of one already made. But again, it is so small, that only special situations it would make a diference
– marcelo-ferraz
Nov 30 '11 at 12:35
|
show 1 more comment
Is there a reason for this? I am asking because if you needed to use lots of empty chars then you get into the same situation as you would when you use lots of empty strings.
Edit: The reason for this usage was this:
myString.Replace ('c', '')
So remove all instances of 'c's from myString.
c# .net string char bcl
Is there a reason for this? I am asking because if you needed to use lots of empty chars then you get into the same situation as you would when you use lots of empty strings.
Edit: The reason for this usage was this:
myString.Replace ('c', '')
So remove all instances of 'c's from myString.
c# .net string char bcl
c# .net string char bcl
edited Dec 29 '17 at 22:38
JohnOsborne
440620
440620
asked Sep 8 '10 at 17:44
Joan VengeJoan Venge
102k174401625
102k174401625
1
Yeah I used that word for lack of a better word. i.e. the recommended way of using String.Empty instead of "".
– Joan Venge
Sep 8 '10 at 17:51
Thanks, do you know why it's not recommended anymore? Is it because of the compiler does it for you?
– Joan Venge
Sep 8 '10 at 18:02
3
If you're concerned about accidentally mistyping '' sometimes, why not just simply wrap the functionality in an extension method along the lines ofRemoveAll(this string s, params char toRemove)
? The intent will be clearly communicated and you will not risk mistyping anything.
– bzlm
Oct 5 '10 at 11:38
11
@Henk - The only reason I use string.Empty is because I find the null object provided by Empty expresses intent better than empty quotes. Empty quotes could result from a merge problem, or a bungled thought, or it could be the actual intent of that code, whereas Empty explicitly tells me that the developer intended for that string not to have data.
– Ritch Melton
May 21 '11 at 0:33
3
There is a difference between "" and the string.Empty. Not that anyone care, really, but "" creates an object, whereas string.Empty makes use of one already made. But again, it is so small, that only special situations it would make a diference
– marcelo-ferraz
Nov 30 '11 at 12:35
|
show 1 more comment
1
Yeah I used that word for lack of a better word. i.e. the recommended way of using String.Empty instead of "".
– Joan Venge
Sep 8 '10 at 17:51
Thanks, do you know why it's not recommended anymore? Is it because of the compiler does it for you?
– Joan Venge
Sep 8 '10 at 18:02
3
If you're concerned about accidentally mistyping '' sometimes, why not just simply wrap the functionality in an extension method along the lines ofRemoveAll(this string s, params char toRemove)
? The intent will be clearly communicated and you will not risk mistyping anything.
– bzlm
Oct 5 '10 at 11:38
11
@Henk - The only reason I use string.Empty is because I find the null object provided by Empty expresses intent better than empty quotes. Empty quotes could result from a merge problem, or a bungled thought, or it could be the actual intent of that code, whereas Empty explicitly tells me that the developer intended for that string not to have data.
– Ritch Melton
May 21 '11 at 0:33
3
There is a difference between "" and the string.Empty. Not that anyone care, really, but "" creates an object, whereas string.Empty makes use of one already made. But again, it is so small, that only special situations it would make a diference
– marcelo-ferraz
Nov 30 '11 at 12:35
1
1
Yeah I used that word for lack of a better word. i.e. the recommended way of using String.Empty instead of "".
– Joan Venge
Sep 8 '10 at 17:51
Yeah I used that word for lack of a better word. i.e. the recommended way of using String.Empty instead of "".
– Joan Venge
Sep 8 '10 at 17:51
Thanks, do you know why it's not recommended anymore? Is it because of the compiler does it for you?
– Joan Venge
Sep 8 '10 at 18:02
Thanks, do you know why it's not recommended anymore? Is it because of the compiler does it for you?
– Joan Venge
Sep 8 '10 at 18:02
3
3
If you're concerned about accidentally mistyping '' sometimes, why not just simply wrap the functionality in an extension method along the lines of
RemoveAll(this string s, params char toRemove)
? The intent will be clearly communicated and you will not risk mistyping anything.– bzlm
Oct 5 '10 at 11:38
If you're concerned about accidentally mistyping '' sometimes, why not just simply wrap the functionality in an extension method along the lines of
RemoveAll(this string s, params char toRemove)
? The intent will be clearly communicated and you will not risk mistyping anything.– bzlm
Oct 5 '10 at 11:38
11
11
@Henk - The only reason I use string.Empty is because I find the null object provided by Empty expresses intent better than empty quotes. Empty quotes could result from a merge problem, or a bungled thought, or it could be the actual intent of that code, whereas Empty explicitly tells me that the developer intended for that string not to have data.
– Ritch Melton
May 21 '11 at 0:33
@Henk - The only reason I use string.Empty is because I find the null object provided by Empty expresses intent better than empty quotes. Empty quotes could result from a merge problem, or a bungled thought, or it could be the actual intent of that code, whereas Empty explicitly tells me that the developer intended for that string not to have data.
– Ritch Melton
May 21 '11 at 0:33
3
3
There is a difference between "" and the string.Empty. Not that anyone care, really, but "" creates an object, whereas string.Empty makes use of one already made. But again, it is so small, that only special situations it would make a diference
– marcelo-ferraz
Nov 30 '11 at 12:35
There is a difference between "" and the string.Empty. Not that anyone care, really, but "" creates an object, whereas string.Empty makes use of one already made. But again, it is so small, that only special situations it would make a diference
– marcelo-ferraz
Nov 30 '11 at 12:35
|
show 1 more comment
19 Answers
19
active
oldest
votes
There's no such thing as an empty char. The closest you can get is ''
, the Unicode "null" character. Given that you can embed that within string literals or express it on its own very easily, why would you want a separate field for it? Equally, the "it's easy to confuse ""
and " "
" arguments don't apply for ''
.
If you could give an example of where you'd want to use it and why you think it would be better, that might help...
2
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
4
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
25
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
8
@Aliostad: Out of interest, if there was a similar field forInt32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?
– Jon Skeet
Sep 8 '10 at 18:17
7
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
|
show 19 more comments
A char, unlike a string, is a discrete thing with a fixed size. A string is really a container of chars.
So, Char.Empty doesn't really make sense in that context. If you have a char, it's not empty.
2
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
1
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
6
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
1
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
2
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
add a comment |
There's no such thing as an empty character. It always contains something. Even '' is a character.
6
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
add a comment |
Use Char.MinValue
which works the same as ''. But be careful it is not the same as String.Empty
.
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
add a comment |
You could use nullable chars.
char? c
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
add a comment |
If you don't need the entire string, you can take advantage of the delayed execution:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
You can even combine multiple characters...
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
... and only the first 7 characters will be evaluated :)
EDIT: or, even better:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char removingChars)
{
return originalString.Except(removingChars);
}
}
and its usage:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
1
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
1
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
1
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
|
show 1 more comment
the same reason there isn't an int.Empty
. Containers can be empty. Scalar values cannot be. If you mean 0 (which is not empty), then use ''
. If you mean null
, then use null
:)
2
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
add a comment |
A char is a value type, so its value cannot be null. (Unless it is wrapped in a Nullable container).
Since it can't be null, in contains some numeric code and each code is mapped to some character.
add a comment |
myString = myString.Replace('c'.ToString(), "");
OK, this is not particularly elegant for removing letters, since the .Replace method has an overload that takes string parameters. But this works for removing carriage returns, line feeds, tabs, etc. This example removes tab characters:
myString = myString.Replace('t'.ToString(), "");
add a comment |
Not an answer to your question, but to denote a default char
you can use just
default(char)
which is same as char.MinValue
which in turn is same as . One shouldn't use if for something like an empty string though.
add a comment |
Doesn't answer your first question - but for the specific problem you had, you can just use strings instead of chars, right?:
myString.Replace("c", "")
There a reason you wouldn't want to do that?
add a comment |
You can also rebuild your string character by character, excluding the characters that you want to get rid of.
Here's an extension method to do this:
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;
}
It's not slick or fancy, but it works well.
Use like this:
string newString = "My_String".RemoveAny("_"); //yields "MyString"
Use aStringBuilder
forresult
. Why not wrapreturn s.Replace(charsToRemove,"");
?
– aloisdg
Jul 9 '16 at 15:26
add a comment |
Easiest way to blanket remove a character from string is to Trim it
cl = cl.Trim(' ');
Removes all of the spaces in a string
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
add a comment |
How about BOM, the magical character Microsoft adds to start of files (at least XML)?
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@onemach, so, whethermyString.Replace ('c', '')
could be achieved bymyString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".
– bzlm
Feb 21 '12 at 9:38
add a comment |
if you want to elliminate the empty char in string the following will work, just convert to any datatype representation you want. thanks,
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());
}
}
}
add a comment |
In terms of C# language, the following may not make much sense. And this is not a direct answer to the question. But fowlloing is what I did in one of my business scenario
char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
Console.Write("Success");
}
The null
and white space
had different business flows in my project. While inserting into database, I need to insert empty string
to the database if it is white space.
add a comment |
I know this one is pretty old, but I encountered an issue recently with having to do multiple replacements to make a file name safe. First, in the latest .NET string.Replace function null is the equivalent to empty character. Having said that, what is missing from .Net is a simple replace all that will replace any character in an array with the desired character. Please feel free to reference the code below (runs in LinqPad for testing).
// 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));
}
}
}
add a comment |
If you want to remove characters that satisfy a specific condition, you may use this:
string s = "SoMEthInG";
s = new string(s.ToCharArray().Where(c => char.IsUpper(c)).ToArray());
(This will leave only the uppercase characters in the string.)
In other words, you may convert the string to an IEnumerable<char>
, make changes on it and then convert it back to a string as shown above.
Again, this enables to not only remove a specific char because of the lambda expression, although you can do so if you change the lambda expression like this: c => c != 't'
.
add a comment |
use
myString.Replace ("c", "")
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f3670505%2fwhy-is-there-no-char-empty-like-string-empty%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
19 Answers
19
active
oldest
votes
19 Answers
19
active
oldest
votes
active
oldest
votes
active
oldest
votes
There's no such thing as an empty char. The closest you can get is ''
, the Unicode "null" character. Given that you can embed that within string literals or express it on its own very easily, why would you want a separate field for it? Equally, the "it's easy to confuse ""
and " "
" arguments don't apply for ''
.
If you could give an example of where you'd want to use it and why you think it would be better, that might help...
2
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
4
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
25
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
8
@Aliostad: Out of interest, if there was a similar field forInt32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?
– Jon Skeet
Sep 8 '10 at 18:17
7
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
|
show 19 more comments
There's no such thing as an empty char. The closest you can get is ''
, the Unicode "null" character. Given that you can embed that within string literals or express it on its own very easily, why would you want a separate field for it? Equally, the "it's easy to confuse ""
and " "
" arguments don't apply for ''
.
If you could give an example of where you'd want to use it and why you think it would be better, that might help...
2
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
4
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
25
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
8
@Aliostad: Out of interest, if there was a similar field forInt32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?
– Jon Skeet
Sep 8 '10 at 18:17
7
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
|
show 19 more comments
There's no such thing as an empty char. The closest you can get is ''
, the Unicode "null" character. Given that you can embed that within string literals or express it on its own very easily, why would you want a separate field for it? Equally, the "it's easy to confuse ""
and " "
" arguments don't apply for ''
.
If you could give an example of where you'd want to use it and why you think it would be better, that might help...
There's no such thing as an empty char. The closest you can get is ''
, the Unicode "null" character. Given that you can embed that within string literals or express it on its own very easily, why would you want a separate field for it? Equally, the "it's easy to confuse ""
and " "
" arguments don't apply for ''
.
If you could give an example of where you'd want to use it and why you think it would be better, that might help...
edited Oct 27 '16 at 19:32
samis
3,49362151
3,49362151
answered Sep 8 '10 at 17:45
Jon SkeetJon Skeet
1090k69179518446
1090k69179518446
2
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
4
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
25
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
8
@Aliostad: Out of interest, if there was a similar field forInt32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?
– Jon Skeet
Sep 8 '10 at 18:17
7
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
|
show 19 more comments
2
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
4
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
25
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
8
@Aliostad: Out of interest, if there was a similar field forInt32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?
– Jon Skeet
Sep 8 '10 at 18:17
7
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
2
2
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
Isn't the the 'end of the byte array'-character? Or am I confusing with something else?
– Bertvan
Sep 8 '10 at 17:47
4
4
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
@Bertvan: Why would there be a character at the end of a byte array? It's used for "null terminated" strings though, yes.
– Jon Skeet
Sep 8 '10 at 17:48
25
25
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
Char.MinValue is better than ''
– Aliostad
Sep 8 '10 at 17:50
8
8
@Aliostad: Out of interest, if there was a similar field for
Int32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?– Jon Skeet
Sep 8 '10 at 18:17
@Aliostad: Out of interest, if there was a similar field for
Int32.Zero
, would you use that instead of the literal 0? If not, what's the difference here?– Jon Skeet
Sep 8 '10 at 18:17
7
7
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
@Adam, @Jon -- what is the code for bell? Or backspace better, think think... Or maybe instead of thinking it is just better to write Char.Backspace? Another reason -- you say it is better to write '0' for terminator, instead, say Char.Terminator, however it is not -- it is too easy to make a typo (fully compiled, see above), but try to write Char.Termnator. There are enough reasons for me to avoid non-checkable, raw values (space missions failed because of stupid typos like that).
– greenoldman
Sep 9 '10 at 6:19
|
show 19 more comments
A char, unlike a string, is a discrete thing with a fixed size. A string is really a container of chars.
So, Char.Empty doesn't really make sense in that context. If you have a char, it's not empty.
2
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
1
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
6
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
1
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
2
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
add a comment |
A char, unlike a string, is a discrete thing with a fixed size. A string is really a container of chars.
So, Char.Empty doesn't really make sense in that context. If you have a char, it's not empty.
2
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
1
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
6
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
1
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
2
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
add a comment |
A char, unlike a string, is a discrete thing with a fixed size. A string is really a container of chars.
So, Char.Empty doesn't really make sense in that context. If you have a char, it's not empty.
A char, unlike a string, is a discrete thing with a fixed size. A string is really a container of chars.
So, Char.Empty doesn't really make sense in that context. If you have a char, it's not empty.
answered Sep 8 '10 at 17:46
JoeJoe
31.6k1390107
31.6k1390107
2
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
1
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
6
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
1
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
2
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
add a comment |
2
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
1
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
6
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
1
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
2
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
2
2
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
Exactly right. It makes sense to ask if a container is empty or not. It makes no sense to ask of a int or float or char is empty.
– T.E.D.
Sep 8 '10 at 18:10
1
1
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
@Joe: Then how can a string be empty if a string is a collection of (non-empty) chars? Probably stupid, sorry...
– user1477388
Jan 29 '13 at 16:32
6
6
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
Because a string isn't the individual objects, it's the collection. Think of a bucket of rocks. I can't have an empty rock. But I can have an empty bucket.
– Joe
Jan 29 '13 at 17:42
1
1
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
I would phrase it as "a char is a primitive, value type, and a string is non-primitive, reference type".
– samis
Aug 26 '13 at 14:26
2
2
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
This is the real answer.
– Gandalf458
Aug 10 '17 at 21:48
add a comment |
There's no such thing as an empty character. It always contains something. Even '' is a character.
6
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
add a comment |
There's no such thing as an empty character. It always contains something. Even '' is a character.
6
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
add a comment |
There's no such thing as an empty character. It always contains something. Even '' is a character.
There's no such thing as an empty character. It always contains something. Even '' is a character.
answered Sep 8 '10 at 17:46
Philippe LeybaertPhilippe Leybaert
132k26186211
132k26186211
6
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
add a comment |
6
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
6
6
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
+1 nice channeling of sir jon!
– kenny
Sep 8 '10 at 19:20
add a comment |
Use Char.MinValue
which works the same as ''. But be careful it is not the same as String.Empty
.
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
add a comment |
Use Char.MinValue
which works the same as ''. But be careful it is not the same as String.Empty
.
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
add a comment |
Use Char.MinValue
which works the same as ''. But be careful it is not the same as String.Empty
.
Use Char.MinValue
which works the same as ''. But be careful it is not the same as String.Empty
.
edited Sep 28 '11 at 11:08
answered Sep 8 '10 at 17:48
AliostadAliostad
69.7k15135190
69.7k15135190
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
add a comment |
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
Thanks, haven't seen that before. Do you know if it work in myString.Replace('c', Char.MinValue)? I should give it a try.
– Joan Venge
Sep 8 '10 at 17:50
add a comment |
You could use nullable chars.
char? c
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
add a comment |
You could use nullable chars.
char? c
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
add a comment |
You could use nullable chars.
char? c
You could use nullable chars.
char? c
answered Sep 8 '10 at 17:54
paquetppaquetp
1,4581018
1,4581018
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
add a comment |
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
This allows ''? Or just null?
– Joan Venge
Sep 8 '10 at 17:57
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
In your case, you could do this: myString.Replace("c", (c == null ? "" : c.ToString()))
– paquetp
Sep 8 '10 at 18:13
add a comment |
If you don't need the entire string, you can take advantage of the delayed execution:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
You can even combine multiple characters...
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
... and only the first 7 characters will be evaluated :)
EDIT: or, even better:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char removingChars)
{
return originalString.Except(removingChars);
}
}
and its usage:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
1
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
1
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
1
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
|
show 1 more comment
If you don't need the entire string, you can take advantage of the delayed execution:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
You can even combine multiple characters...
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
... and only the first 7 characters will be evaluated :)
EDIT: or, even better:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char removingChars)
{
return originalString.Except(removingChars);
}
}
and its usage:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
1
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
1
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
1
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
|
show 1 more comment
If you don't need the entire string, you can take advantage of the delayed execution:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
You can even combine multiple characters...
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
... and only the first 7 characters will be evaluated :)
EDIT: or, even better:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char removingChars)
{
return originalString.Except(removingChars);
}
}
and its usage:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
If you don't need the entire string, you can take advantage of the delayed execution:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
You can even combine multiple characters...
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
... and only the first 7 characters will be evaluated :)
EDIT: or, even better:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char removingChars)
{
return originalString.Except(removingChars);
}
}
and its usage:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
edited Sep 9 '10 at 19:08
answered Sep 8 '10 at 19:17
NotoriousxlNotoriousxl
9951224
9951224
1
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
1
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
1
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
|
show 1 more comment
1
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
1
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
1
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
1
1
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
Genius example.
– Joan Venge
Sep 8 '10 at 19:41
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
@Joan: thanks... even if "Genius" it's a bit exaggerated :P (I don't know about its performances when removingChars will become a big array...)
– Notoriousxl
Sep 8 '10 at 19:59
1
1
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
Yesterday I forgot: pay attention on how you are using the result variable "firstFiveCharsWithoutCsAndDs". If you don't want to pass it to another "yield" method (like those of LINQ), call immediately a ".ToArray()" after the "Take(5)"... otherwise, the "RemoveChars + Take" chain will be executed every time you access the variable in a "traditional" fashion (for example, every you call a "Count()" on it, or when you traverse it in a foreach without "yield return")
– Notoriousxl
Sep 9 '10 at 19:07
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
+1 nice thinking. but this can't get as maintainable or efficient as the basic approach :)
– nawfal
Feb 5 '13 at 9:51
1
1
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
@nawfal efficiency-wise you're right, but I think that myString.Except("c") is more declarative than myString.Replace('c', '') :P (and it scales pretty well: myString.Except("aeiou"))
– Notoriousxl
Feb 5 '13 at 18:28
|
show 1 more comment
the same reason there isn't an int.Empty
. Containers can be empty. Scalar values cannot be. If you mean 0 (which is not empty), then use ''
. If you mean null
, then use null
:)
2
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
add a comment |
the same reason there isn't an int.Empty
. Containers can be empty. Scalar values cannot be. If you mean 0 (which is not empty), then use ''
. If you mean null
, then use null
:)
2
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
add a comment |
the same reason there isn't an int.Empty
. Containers can be empty. Scalar values cannot be. If you mean 0 (which is not empty), then use ''
. If you mean null
, then use null
:)
the same reason there isn't an int.Empty
. Containers can be empty. Scalar values cannot be. If you mean 0 (which is not empty), then use ''
. If you mean null
, then use null
:)
answered Sep 8 '10 at 17:51
tenfourtenfour
27.1k1259121
27.1k1259121
2
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
add a comment |
2
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
2
2
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
null is not possible as char is a ValueType. You'd have to use char? to be able to assign null to it.
– Femaref
Sep 8 '10 at 17:53
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
you chould make it nullable. see my answer
– paquetp
Sep 8 '10 at 17:54
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
Good point man.
– Joan Venge
Sep 8 '10 at 17:56
add a comment |
A char is a value type, so its value cannot be null. (Unless it is wrapped in a Nullable container).
Since it can't be null, in contains some numeric code and each code is mapped to some character.
add a comment |
A char is a value type, so its value cannot be null. (Unless it is wrapped in a Nullable container).
Since it can't be null, in contains some numeric code and each code is mapped to some character.
add a comment |
A char is a value type, so its value cannot be null. (Unless it is wrapped in a Nullable container).
Since it can't be null, in contains some numeric code and each code is mapped to some character.
A char is a value type, so its value cannot be null. (Unless it is wrapped in a Nullable container).
Since it can't be null, in contains some numeric code and each code is mapped to some character.
answered Sep 8 '10 at 17:53
epotterepotter
4,73865684
4,73865684
add a comment |
add a comment |
myString = myString.Replace('c'.ToString(), "");
OK, this is not particularly elegant for removing letters, since the .Replace method has an overload that takes string parameters. But this works for removing carriage returns, line feeds, tabs, etc. This example removes tab characters:
myString = myString.Replace('t'.ToString(), "");
add a comment |
myString = myString.Replace('c'.ToString(), "");
OK, this is not particularly elegant for removing letters, since the .Replace method has an overload that takes string parameters. But this works for removing carriage returns, line feeds, tabs, etc. This example removes tab characters:
myString = myString.Replace('t'.ToString(), "");
add a comment |
myString = myString.Replace('c'.ToString(), "");
OK, this is not particularly elegant for removing letters, since the .Replace method has an overload that takes string parameters. But this works for removing carriage returns, line feeds, tabs, etc. This example removes tab characters:
myString = myString.Replace('t'.ToString(), "");
myString = myString.Replace('c'.ToString(), "");
OK, this is not particularly elegant for removing letters, since the .Replace method has an overload that takes string parameters. But this works for removing carriage returns, line feeds, tabs, etc. This example removes tab characters:
myString = myString.Replace('t'.ToString(), "");
edited May 21 '11 at 0:26
answered May 21 '11 at 0:12
Mike TaverneMike Taverne
6,05722139
6,05722139
add a comment |
add a comment |
Not an answer to your question, but to denote a default char
you can use just
default(char)
which is same as char.MinValue
which in turn is same as . One shouldn't use if for something like an empty string though.
add a comment |
Not an answer to your question, but to denote a default char
you can use just
default(char)
which is same as char.MinValue
which in turn is same as . One shouldn't use if for something like an empty string though.
add a comment |
Not an answer to your question, but to denote a default char
you can use just
default(char)
which is same as char.MinValue
which in turn is same as . One shouldn't use if for something like an empty string though.
Not an answer to your question, but to denote a default char
you can use just
default(char)
which is same as char.MinValue
which in turn is same as . One shouldn't use if for something like an empty string though.
answered Feb 4 '13 at 9:53
nawfalnawfal
43.2k36255298
43.2k36255298
add a comment |
add a comment |
Doesn't answer your first question - but for the specific problem you had, you can just use strings instead of chars, right?:
myString.Replace("c", "")
There a reason you wouldn't want to do that?
add a comment |
Doesn't answer your first question - but for the specific problem you had, you can just use strings instead of chars, right?:
myString.Replace("c", "")
There a reason you wouldn't want to do that?
add a comment |
Doesn't answer your first question - but for the specific problem you had, you can just use strings instead of chars, right?:
myString.Replace("c", "")
There a reason you wouldn't want to do that?
Doesn't answer your first question - but for the specific problem you had, you can just use strings instead of chars, right?:
myString.Replace("c", "")
There a reason you wouldn't want to do that?
edited Jan 29 '13 at 16:32
answered Jan 29 '13 at 16:24
Ian GraingerIan Grainger
2,89423056
2,89423056
add a comment |
add a comment |
You can also rebuild your string character by character, excluding the characters that you want to get rid of.
Here's an extension method to do this:
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;
}
It's not slick or fancy, but it works well.
Use like this:
string newString = "My_String".RemoveAny("_"); //yields "MyString"
Use aStringBuilder
forresult
. Why not wrapreturn s.Replace(charsToRemove,"");
?
– aloisdg
Jul 9 '16 at 15:26
add a comment |
You can also rebuild your string character by character, excluding the characters that you want to get rid of.
Here's an extension method to do this:
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;
}
It's not slick or fancy, but it works well.
Use like this:
string newString = "My_String".RemoveAny("_"); //yields "MyString"
Use aStringBuilder
forresult
. Why not wrapreturn s.Replace(charsToRemove,"");
?
– aloisdg
Jul 9 '16 at 15:26
add a comment |
You can also rebuild your string character by character, excluding the characters that you want to get rid of.
Here's an extension method to do this:
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;
}
It's not slick or fancy, but it works well.
Use like this:
string newString = "My_String".RemoveAny("_"); //yields "MyString"
You can also rebuild your string character by character, excluding the characters that you want to get rid of.
Here's an extension method to do this:
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;
}
It's not slick or fancy, but it works well.
Use like this:
string newString = "My_String".RemoveAny("_"); //yields "MyString"
answered Sep 2 '15 at 14:12
matrixuglymatrixugly
1,43621737
1,43621737
Use aStringBuilder
forresult
. Why not wrapreturn s.Replace(charsToRemove,"");
?
– aloisdg
Jul 9 '16 at 15:26
add a comment |
Use aStringBuilder
forresult
. Why not wrapreturn s.Replace(charsToRemove,"");
?
– aloisdg
Jul 9 '16 at 15:26
Use a
StringBuilder
for result
. Why not wrap return s.Replace(charsToRemove,"");
?– aloisdg
Jul 9 '16 at 15:26
Use a
StringBuilder
for result
. Why not wrap return s.Replace(charsToRemove,"");
?– aloisdg
Jul 9 '16 at 15:26
add a comment |
Easiest way to blanket remove a character from string is to Trim it
cl = cl.Trim(' ');
Removes all of the spaces in a string
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
add a comment |
Easiest way to blanket remove a character from string is to Trim it
cl = cl.Trim(' ');
Removes all of the spaces in a string
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
add a comment |
Easiest way to blanket remove a character from string is to Trim it
cl = cl.Trim(' ');
Removes all of the spaces in a string
Easiest way to blanket remove a character from string is to Trim it
cl = cl.Trim(' ');
Removes all of the spaces in a string
answered Sep 4 '17 at 11:07
MrSmudgeMrSmudge
461
461
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
add a comment |
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
This is helpful if one wants to use use .Replace('c', ' ') with the downside of removing other whitespaces. But its more helpful than lots of other answers given.
– Jan
Feb 27 '18 at 9:30
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
No this is wrong! Trim only remove chars from the start and end of a string not in the middle
– userSteve
Jan 10 at 15:39
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
Yup, I was wrong on this one, good job
– MrSmudge
Jan 11 at 16:43
add a comment |
How about BOM, the magical character Microsoft adds to start of files (at least XML)?
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@onemach, so, whethermyString.Replace ('c', '')
could be achieved bymyString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".
– bzlm
Feb 21 '12 at 9:38
add a comment |
How about BOM, the magical character Microsoft adds to start of files (at least XML)?
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@onemach, so, whethermyString.Replace ('c', '')
could be achieved bymyString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".
– bzlm
Feb 21 '12 at 9:38
add a comment |
How about BOM, the magical character Microsoft adds to start of files (at least XML)?
How about BOM, the magical character Microsoft adds to start of files (at least XML)?
answered Sep 10 '10 at 5:02
Arto ViitanenArto Viitanen
1743
1743
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@onemach, so, whethermyString.Replace ('c', '')
could be achieved bymyString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".
– bzlm
Feb 21 '12 at 9:38
add a comment |
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@onemach, so, whethermyString.Replace ('c', '')
could be achieved bymyString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".
– bzlm
Feb 21 '12 at 9:38
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
The wording on Wikipedia here is quite unfortunate; the BOM is not a character in this context. And what is your question exactly? :)
– bzlm
Oct 5 '10 at 11:36
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@bzlm "how about..." ...
– onemach
Feb 21 '12 at 8:20
@onemach, so, whether
myString.Replace ('c', '')
could be achieved by myString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".– bzlm
Feb 21 '12 at 9:38
@onemach, so, whether
myString.Replace ('c', '')
could be achieved by myString.Replace ('c', UTF_BOM)
. Then I'd say the answer is "how not about...".– bzlm
Feb 21 '12 at 9:38
add a comment |
if you want to elliminate the empty char in string the following will work, just convert to any datatype representation you want. thanks,
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());
}
}
}
add a comment |
if you want to elliminate the empty char in string the following will work, just convert to any datatype representation you want. thanks,
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());
}
}
}
add a comment |
if you want to elliminate the empty char in string the following will work, just convert to any datatype representation you want. thanks,
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());
}
}
}
if you want to elliminate the empty char in string the following will work, just convert to any datatype representation you want. thanks,
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());
}
}
}
edited Jun 27 '13 at 9:28
Joan Venge
102k174401625
102k174401625
answered Jun 26 '13 at 13:48
Alexander ZaldostanovAlexander Zaldostanov
1,93932329
1,93932329
add a comment |
add a comment |
In terms of C# language, the following may not make much sense. And this is not a direct answer to the question. But fowlloing is what I did in one of my business scenario
char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
Console.Write("Success");
}
The null
and white space
had different business flows in my project. While inserting into database, I need to insert empty string
to the database if it is white space.
add a comment |
In terms of C# language, the following may not make much sense. And this is not a direct answer to the question. But fowlloing is what I did in one of my business scenario
char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
Console.Write("Success");
}
The null
and white space
had different business flows in my project. While inserting into database, I need to insert empty string
to the database if it is white space.
add a comment |
In terms of C# language, the following may not make much sense. And this is not a direct answer to the question. But fowlloing is what I did in one of my business scenario
char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
Console.Write("Success");
}
The null
and white space
had different business flows in my project. While inserting into database, I need to insert empty string
to the database if it is white space.
In terms of C# language, the following may not make much sense. And this is not a direct answer to the question. But fowlloing is what I did in one of my business scenario
char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
Console.Write("Success");
}
The null
and white space
had different business flows in my project. While inserting into database, I need to insert empty string
to the database if it is white space.
answered Sep 5 '13 at 10:16
LijoLijo
10.9k55198335
10.9k55198335
add a comment |
add a comment |
I know this one is pretty old, but I encountered an issue recently with having to do multiple replacements to make a file name safe. First, in the latest .NET string.Replace function null is the equivalent to empty character. Having said that, what is missing from .Net is a simple replace all that will replace any character in an array with the desired character. Please feel free to reference the code below (runs in LinqPad for testing).
// 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));
}
}
}
add a comment |
I know this one is pretty old, but I encountered an issue recently with having to do multiple replacements to make a file name safe. First, in the latest .NET string.Replace function null is the equivalent to empty character. Having said that, what is missing from .Net is a simple replace all that will replace any character in an array with the desired character. Please feel free to reference the code below (runs in LinqPad for testing).
// 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));
}
}
}
add a comment |
I know this one is pretty old, but I encountered an issue recently with having to do multiple replacements to make a file name safe. First, in the latest .NET string.Replace function null is the equivalent to empty character. Having said that, what is missing from .Net is a simple replace all that will replace any character in an array with the desired character. Please feel free to reference the code below (runs in LinqPad for testing).
// 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));
}
}
}
I know this one is pretty old, but I encountered an issue recently with having to do multiple replacements to make a file name safe. First, in the latest .NET string.Replace function null is the equivalent to empty character. Having said that, what is missing from .Net is a simple replace all that will replace any character in an array with the desired character. Please feel free to reference the code below (runs in LinqPad for testing).
// 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));
}
}
}
answered Feb 27 '15 at 15:18
JimJim
7461712
7461712
add a comment |
add a comment |
If you want to remove characters that satisfy a specific condition, you may use this:
string s = "SoMEthInG";
s = new string(s.ToCharArray().Where(c => char.IsUpper(c)).ToArray());
(This will leave only the uppercase characters in the string.)
In other words, you may convert the string to an IEnumerable<char>
, make changes on it and then convert it back to a string as shown above.
Again, this enables to not only remove a specific char because of the lambda expression, although you can do so if you change the lambda expression like this: c => c != 't'
.
add a comment |
If you want to remove characters that satisfy a specific condition, you may use this:
string s = "SoMEthInG";
s = new string(s.ToCharArray().Where(c => char.IsUpper(c)).ToArray());
(This will leave only the uppercase characters in the string.)
In other words, you may convert the string to an IEnumerable<char>
, make changes on it and then convert it back to a string as shown above.
Again, this enables to not only remove a specific char because of the lambda expression, although you can do so if you change the lambda expression like this: c => c != 't'
.
add a comment |
If you want to remove characters that satisfy a specific condition, you may use this:
string s = "SoMEthInG";
s = new string(s.ToCharArray().Where(c => char.IsUpper(c)).ToArray());
(This will leave only the uppercase characters in the string.)
In other words, you may convert the string to an IEnumerable<char>
, make changes on it and then convert it back to a string as shown above.
Again, this enables to not only remove a specific char because of the lambda expression, although you can do so if you change the lambda expression like this: c => c != 't'
.
If you want to remove characters that satisfy a specific condition, you may use this:
string s = "SoMEthInG";
s = new string(s.ToCharArray().Where(c => char.IsUpper(c)).ToArray());
(This will leave only the uppercase characters in the string.)
In other words, you may convert the string to an IEnumerable<char>
, make changes on it and then convert it back to a string as shown above.
Again, this enables to not only remove a specific char because of the lambda expression, although you can do so if you change the lambda expression like this: c => c != 't'
.
answered Jun 26 '16 at 16:49
florienflorien
195312
195312
add a comment |
add a comment |
use
myString.Replace ("c", "")
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
add a comment |
use
myString.Replace ("c", "")
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
add a comment |
use
myString.Replace ("c", "")
use
myString.Replace ("c", "")
answered Jan 26 '16 at 6:30
ChintanChintan
9013
9013
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
add a comment |
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
This is a duplicate of an answer from 2013 by Ian Grainger.
– Joe Gayetty
Apr 17 '18 at 14:34
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f3670505%2fwhy-is-there-no-char-empty-like-string-empty%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Yeah I used that word for lack of a better word. i.e. the recommended way of using String.Empty instead of "".
– Joan Venge
Sep 8 '10 at 17:51
Thanks, do you know why it's not recommended anymore? Is it because of the compiler does it for you?
– Joan Venge
Sep 8 '10 at 18:02
3
If you're concerned about accidentally mistyping '' sometimes, why not just simply wrap the functionality in an extension method along the lines of
RemoveAll(this string s, params char toRemove)
? The intent will be clearly communicated and you will not risk mistyping anything.– bzlm
Oct 5 '10 at 11:38
11
@Henk - The only reason I use string.Empty is because I find the null object provided by Empty expresses intent better than empty quotes. Empty quotes could result from a merge problem, or a bungled thought, or it could be the actual intent of that code, whereas Empty explicitly tells me that the developer intended for that string not to have data.
– Ritch Melton
May 21 '11 at 0:33
3
There is a difference between "" and the string.Empty. Not that anyone care, really, but "" creates an object, whereas string.Empty makes use of one already made. But again, it is so small, that only special situations it would make a diference
– marcelo-ferraz
Nov 30 '11 at 12:35