如何使用 IndexOf 删除空格?
How to remove spaces using IndexOf?
我创建了以下内容来计算字数。现在我需要使用 IndexOf 删除所有空格。我卡住了。有人可以帮忙吗?它必须是简单的东西,但我无法弄清楚。
string text = "Hello. What time is it?";
int position = 0;
int noSpaces = 0;
for (int i = 0; i < text.Length; i++)
{
position = text.IndexOf(' ', position + 1);
if (position != -1)
{ noSpaces++; }
if (position == -1) break;
}
Console.WriteLine(noSpaces + 1);
如果你的需求是统计字数,试试这个不行吗?
string text = "Hello. What time is it?";
var arr = text.Split(' ');
var count = arr.Length;
如果您只想删除文本中的空格,使其看起来像:Hello.Whattimeisit?
那么您需要做的就是使用 String.Replace:
string text = "Hello. What time is it?";
string textWithNoSpaces = text.Replace(" ", "");
Console.WriteLine(textWithNoSpaces); // will print "Hello.Whattimeisit?"
如果您希望将文本拆分成单独的词,那么您需要使用 String.Split:
string text = "Hello. What time is it?";
string[] words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // "RemoveEmptyEntries" will remove any entries which are empty: ""
// words[0] > Hello.
// words[1] > What
// etc.
然后,如果您需要 Hello.Whattimeisit?
:
形式的文本,您可以使用 String.Concat 计算文本中有多少个单词,然后将它们组合起来
int numberOfWords = words.Length;
string textWithNoSpaces = string.Concat(words);
更新:这是计算字数并使用 String.IndexOf & String.Substring:
删除空格的方法
这是一个非常草率的例子,但它完成了工作
string text = "Hello. What time is it?";
string newText = string.Empty;
int prevIndex = 0;
int index1 = 0;
int index2 = 0;
int numberOfWords = 0;
while (true)
{
index1 = text.IndexOf(' ', prevIndex);
if (index1 == -1)
{
if (prevIndex < text.Length)
{
newText += text.Substring(prevIndex, (text.Length - prevIndex));
numberOfWords += 1;
}
break;
}
index2 = text.IndexOf(' ', (index1 + 1));
if ((index2 == -1) || (index2 > (index1 + 1)))
{
newText += text.Substring(prevIndex, (index1 - prevIndex));
numberOfWords += 1;
}
prevIndex = (index1 + 1);
}
Console.WriteLine(numberOfWords); // will print 5
Console.WriteLine(newText); // will print "Hello.Whattimeisit?"
Console.ReadLine();
字符串是不可变的,因此您不能仅使用需要多次更改的 IndexOf 来实现它。如果您需要使用该特定方法实现它,我认为 StringBuilder 是唯一的方法。但是,如果这不是一些任务并且您打算在实际应用程序中使用它,我强烈反对,因为它真的很繁重。
我创建了以下内容来计算字数。现在我需要使用 IndexOf 删除所有空格。我卡住了。有人可以帮忙吗?它必须是简单的东西,但我无法弄清楚。
string text = "Hello. What time is it?";
int position = 0;
int noSpaces = 0;
for (int i = 0; i < text.Length; i++)
{
position = text.IndexOf(' ', position + 1);
if (position != -1)
{ noSpaces++; }
if (position == -1) break;
}
Console.WriteLine(noSpaces + 1);
如果你的需求是统计字数,试试这个不行吗?
string text = "Hello. What time is it?";
var arr = text.Split(' ');
var count = arr.Length;
如果您只想删除文本中的空格,使其看起来像:Hello.Whattimeisit?
那么您需要做的就是使用 String.Replace:
string text = "Hello. What time is it?";
string textWithNoSpaces = text.Replace(" ", "");
Console.WriteLine(textWithNoSpaces); // will print "Hello.Whattimeisit?"
如果您希望将文本拆分成单独的词,那么您需要使用 String.Split:
string text = "Hello. What time is it?";
string[] words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // "RemoveEmptyEntries" will remove any entries which are empty: ""
// words[0] > Hello.
// words[1] > What
// etc.
然后,如果您需要 Hello.Whattimeisit?
:
int numberOfWords = words.Length;
string textWithNoSpaces = string.Concat(words);
更新:这是计算字数并使用 String.IndexOf & String.Substring:
删除空格的方法这是一个非常草率的例子,但它完成了工作
string text = "Hello. What time is it?";
string newText = string.Empty;
int prevIndex = 0;
int index1 = 0;
int index2 = 0;
int numberOfWords = 0;
while (true)
{
index1 = text.IndexOf(' ', prevIndex);
if (index1 == -1)
{
if (prevIndex < text.Length)
{
newText += text.Substring(prevIndex, (text.Length - prevIndex));
numberOfWords += 1;
}
break;
}
index2 = text.IndexOf(' ', (index1 + 1));
if ((index2 == -1) || (index2 > (index1 + 1)))
{
newText += text.Substring(prevIndex, (index1 - prevIndex));
numberOfWords += 1;
}
prevIndex = (index1 + 1);
}
Console.WriteLine(numberOfWords); // will print 5
Console.WriteLine(newText); // will print "Hello.Whattimeisit?"
Console.ReadLine();
字符串是不可变的,因此您不能仅使用需要多次更改的 IndexOf 来实现它。如果您需要使用该特定方法实现它,我认为 StringBuilder 是唯一的方法。但是,如果这不是一些任务并且您打算在实际应用程序中使用它,我强烈反对,因为它真的很繁重。