C# 以不同的方式替换单词

C# 以不同的方式替换单词,c#,.net,string,C#,.net,String,首先,我有一个短语,比如ice z comp。在输出中,我需要列表,其中包含带破折号的单词,例如:ice-z-comp,ice-z-comp,ice-z-comp 现在我有这个: var synonymFromSynonym = new List<string>(); var countOfSpaces = word.Count(Char.IsWhiteSpace); for (int x = 0; x < countOfSpaces; x++) { // What h

首先,我有一个短语,比如
ice z comp
。在输出中,我需要
列表
,其中包含带破折号的单词,例如:
ice-z-comp,ice-z-comp,ice-z-comp

现在我有这个:

var synonymFromSynonym = new List<string>();
var countOfSpaces = word.Count(Char.IsWhiteSpace);
for (int x = 0; x < countOfSpaces; x++)
{
    // What here for my output ?
}
var synonymfromsynymon=new List();
var countOfSpaces=word.Count(Char.IsWhiteSpace);
for(int x=0;x
可以使用以下实现解决该问题。首先,将输入拆分为单个单词

var Words = word.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToArray();
然后,考虑两种情况,即连接是用空格还是连字符完成的,再次组合单词。这可以按如下方式递归完成,其中像
GenerateResult(“,0)
这样的调用将启动计算

List<string> Result = new List<string>();

void GenerateResult(string Intermediate, int Position)
{
    if (Position == Words.Count() - 1) // base case, nothing to append
    {
        Result.Add(Intermadiate);
    }
    else
    {
        GenerateResult( Intermediate + " ", Position + 1 ); // space case
        GenerateResult( Intermediate + "-", Position + 1 ); // hyphen case
    }
}
列表结果=新列表();
void GenerateResult(字符串中间,int位置)
{
如果(Position==Words.Count()-1)//基本大小写,则没有要追加的内容
{
结果:添加(中间辐射);
}
其他的
{
GenerateResult(中间+“”,位置+1);//空格大小写
GenerateResult(中间+“-”,位置+1);//连字符大小写
}
}
这里有一个算法:(1)找到字符串中所有空格的位置;(2) 循环遍历从0到
2^n
的所有数字,使用
n
空格数;(3)考虑每一个这样的数字作为一组标志,其中<代码> i>代码>第十位指示是否用破折号来替换<代码> i <代码>第四空间。