快速的小问题......
我需要计算字符串的长度,但不包含其中的空格。
例如。对于像“我是鲍勃”这样的字符串,string.Length
将返回8(6个字母+2个空格)。
我需要一种方法或其他东西来给我字母的长度(或数量)(在“我是鲍勃”的情况下为6)
我试过以下
s.Replace (" ", "");
s.Replace (" ", null);
s.Replace (" ", string.empty);
尝试获得“IamBob”,我做了,但它没有解决我的问题,因为它仍然将“”视为一个角色。
任何帮助?
答案 0 :(得分:16)
这将返回非空白字符的数量:
"I am Bob".Count(c => !Char.IsWhiteSpace(c));
空格字符是以下Unicode字符:
答案 1 :(得分:6)
否。它没有。
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
这是DEMO
。
但是什么是空格字符?
http://en.wikipedia.org/wiki/Whitespace_character
答案 2 :(得分:4)
您可能忘记重新分配Replace
的结果。试试这个:
string s = "I am bob";
Console.WriteLine(s.Length); // 8
s = s.Replace(" ", "");
Console.WriteLine(s.Length); // 6
答案 3 :(得分:1)
一种非常简单的方法是编写一个扩展方法来实现这一点 - 计算没有空格的字符。这是代码:
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;
}
}
要执行,只需在字符串上调用方法:
string yourString = "I am Bob";
int count = yourString.CharCountWithoutSpaces();
Console.WriteLine(count); //=6
或者,如果您不想包括说句,句号或逗号,则可以按照您想要的方式拆分字符串:
string[] arr = str.Split('.');
或:
string[] arr = str.Split(',');
答案 4 :(得分:0)
这是最快的方法:
var spaceCount = 0;
for (var i 0; i < @string.Lenght; i++)
{
if (@string[i]==" ") spaceCount++;
}
var res = @string.Lenght-spaceCount;
答案 5 :(得分:0)
您的问题可能与Replace()方法有关,而不是实际更改字符串,而是返回替换值;
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
答案 6 :(得分:0)
您可以在字符串对象上使用Length
和Count
函数的组合。这是一个简单的例子。
string sText = "This is great text";
int nSpaces = sText.Length - sText.Count(Char.IsWhiteSpace);
这将准确计算单个或多个(一致)空格。
希望它有所帮助。