Length of string WITHOUT spaces (C#)

只愿长相守 提交于 2021-02-20 10:13:00

问题


Quick little question...

I need to count the length of a string, but WITHOUT the spaces inside of it. E.g. for a string like "I am Bob", string.Length would return 8 (6 letters + 2 spaces).

I need a method, or something, to give me the length (or number of) just the letters (6 in the case of "I am Bob")

I have tried the following

s.Replace (" ", "");
s.Replace (" ", null);
s.Replace (" ", string.empty);

to try and get "IamBob", which I did, but it didn't solve my problem because it still counted "" as a character.

Any help?


回答1:


This returns the number of non-whitespace characters:

"I am Bob".Count(c => !Char.IsWhiteSpace(c));

Demo

Char.IsWhiteSpace:

White space characters are the following Unicode characters:

  • Members of the SpaceSeparator category, which includes the characters SPACE (U+0020), OGHAM SPACE MARK (U+1680), MONGOLIAN VOWEL SEPARATOR (U+180E), EN QUAD (U+2000), EM QUAD (U+2001), EN SPACE (U+2002), EM SPACE (U+2003), THREE-PER-EM SPACE (U+2004), FOUR-PER-EM SPACE (U+2005), SIX-PER-EM SPACE (U+2006), FIGURE SPACE (U+2007), PUNCTUATION SPACE (U+2008), THIN SPACE (U+2009), HAIR SPACE (U+200A), NARROW NO-BREAK SPACE (U+202F), MEDIUM MATHEMATICAL SPACE (U+205F), and IDEOGRAPHIC SPACE (U+3000).
  • Members of the LineSeparator category, which consists solely of the LINE SEPARATOR character (U+2028).
  • Members of the ParagraphSeparator category, which consists solely of the PARAGRAPH SEPARATOR character (U+2029).
  • The characters CHARACTER TABULATION (U+0009), LINE FEED (U+000A), LINE TABULATION (U+000B), FORM FEED (U+000C), CARRIAGE RETURN (U+000D), NEXT LINE (U+0085), and NO-BREAK SPACE (U+00A0).



回答2:


No. It doesn't.

string s = "I am Bob";
Console.WriteLine(s.Replace(" ", "").Length); // 6
Console.WriteLine(s.Replace(" ", null).Length); //6
Console.WriteLine(s.Replace(" ", string.Empty).Length); //6

Here is a DEMO.

But what are whitespace characters?

http://en.wikipedia.org/wiki/Whitespace_character

whitespace characters




回答3:


You probably forgot to reassign the result of Replace. Try this:

string s = "I am bob";
Console.WriteLine(s.Length); // 8
s = s.Replace(" ", "");
Console.WriteLine(s.Length); // 6



回答4:


A pretty simple way is to write an extension method that will do just that- count the characters without the white spaces. Here's the code:

public static class MyExtension
{
    public static int CharCountWithoutSpaces(this string str)
    {
        string[] arr = str.Split(' ');
        string allChars = "";
        foreach (string s in arr)
        {
            allChars += s;
        }
        int length = allChars.Length;
        return length;
    }
}

To execute, simply call the method on the string:

string yourString = "I am Bob";
        int count = yourString.CharCountWithoutSpaces();
        Console.WriteLine(count); //=6

Alternatively, you can split the string an way you want if you don't want to include say, periods or commas:

string[] arr = str.Split('.');

or:

string[] arr = str.Split(',');



回答5:


this is fastest way:

var spaceCount = 0;
for (var i 0; i < @string.Lenght; i++)
{
    if (@string[i]==" ") spaceCount++;
}
var res = @string.Lenght-spaceCount;



回答6:


Your problem is probably related to Replace() method not actually changing the string, rather returning the replaced value;

string withSpaces = "I am Bob";
string withoutSpaces = withSpaces.Replace(" ","");
Console.WriteLine(withSpaces);
Console.WriteLine(withoutSpaces);
Console.WriteLine(withSpaces.Length);
Console.WriteLine(withoutSpaces.Length);

//output
//I am Bob
//IamBob
//8
//6



回答7:


You can use a combination of Length and Count functions on the string object. Here is a simple example.

    string sText = "This is great  text";
    int nSpaces = sText.Length - sText.Count(Char.IsWhiteSpace);

This will count single or multiple (consistent) spaces accurately.

Hope it helps.



来源:https://stackoverflow.com/questions/16608691/length-of-string-without-spaces-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!