c#提取单词

时间:2010-09-22 13:06:17

标签: c#

我有以下代码片段,我只使用一个空格分割单词,输出为

输出:

when 
ambition
ends
happiness
begins

但我希望在两个空格之后拆分我的意思我的输出应该是这样的:

when ambition
ends happiness
begins
string vj = "when ambiton ends happiness begins";
List<string> k = new List<string>();
char ch = ' ';
string[] arr = vj.Split(ch);
foreach (string r in arr)
{
  Response.Write(r + "<br/>");
}

7 个答案:

答案 0 :(得分:2)

由于这是标记的作业,我会给出一个提示:

  • 为每行 想要的空格数
  • 设置一个计数器
  • 达到空格数时重置此计数器
  • 达到空格数时,添加换行符

答案 1 :(得分:2)

这是一个使用正则表达式的解决方案:

// Loosely: a word, followed by another word if available
Regex regex = new Regex(@"\S+( \S+)?"); 

string[] splits = regex.Matches(inputText)
                       .Cast<Match>()
                       .Select(match => match.Value)
                       .ToArray();

答案 2 :(得分:1)

像现在一样拆分它,然后循环生成的数组并使用标准的for循环将它们连接起来。

答案 3 :(得分:0)

你必须在这个上手动,搜索字符串中的空格字符,并保留一个计数器。你必须记住你想要拆分的空格字符的索引,并使用.Substring(startindex,length)方法来提取单独的部分。

答案 4 :(得分:0)

  1. 创建一个包含要提取的单词的起始位置的变量
  2. 创建空间计数器
  3. 通过char循环char(使用索引器)
  4. 当空格数等于2时,从#1中保存的位置调用substring方法到当前索引。
  5. 将变量从#1更改为当前索引。

答案 5 :(得分:0)

string vj = "when ambiton ends happiness begins";
List<string> k = new List<string>();
char ch = ' ';
string[] arr = vj.Split(ch);
bool flag=false;

foreach (string r in arr)
{
 if(flag)
    {
    Response.Write(r + "<br/>");
    flag=false;
    }
 else
    { 
    Response.Write(r + " ");
    flag=true;
    }
}

以上内容适用于您指定的情况(跳过单个空格)。


虽然没有必要,但是如果你想把它全部包裹起来,请点击这里:

string myString = "when ambiton ends happiness begins";

bool flag=false;

foreach (string item in myString.Split(ch))
         Response.Write(item + flag=!flag?" ":"<br/>");

答案 6 :(得分:0)

你可以添加一个bool来表明你是否应该添加“/ br”,称之为breakLine 现在在每次迭代时检查它是否为真 - 如果是,则添加“/ br”,否则不要。最后在每次迭代时否定它 实施留作练习( - :