C#substring从特定字符到第一个空格

时间:2017-04-28 19:43:35

标签: c#

我想用另一个字符串替换以特定字符开头的字符串,直到那之后的第一个空格(或者可能是第一个特定字符)。

例如,如果我们有这样的字符串:

aaa bbb ccc @ddd eee fff @ggg hh#iii. jj

我想做到这样的事。

aaa bbb ccc @MMM eee fff @MMM hh#MMM. jj

I found a solution但这对我没用。

更新

我想要替换所有以@#开头且以.或其他我想要的其他字词结尾的字词{{1} }}

  

在一个真实的例子中,我只知道一些工作从MMM@开始。

2 个答案:

答案 0 :(得分:1)

我认为这会为您的需求提供良好的开端,但可能需要根据您的具体需求进行一些改进。

return string.Join(" ", val.Split().Select(s => s.StartsWIth('@') || s.StartsWith('#') ? s[0] + "MMM" : s));

Juharr在评论

中使用Linq的单行示例
{{1}}

答案 1 :(得分:0)

    string example = "aaa bbb ccc @ddd eee fff @ggg hh"; //Init the input 
    string[] splitExample = example.Split(' '); //Split the string after every space into an array of substrings
    for (int i = 0; i < splitExample.Length; i++) //Iterate through each substring
    {
        if (splitExample[i] != null) //Check if the currently tested string exists within the array
        {
            if (splitExample[i] == '@') // Test if the first char of the currently tested substring is '@'
            {
                splitExample[i] = "@MMM"
            }
        }
        else
        {
            break; //Exit the loop if the tested string does not exist
        } 
    }
    string exampleOutput;
    foreach(string append in splitExample) //Iterate through the array and add the now modified substrings back together
    {
        exampleOutput = exampleOutput + " " + append;
    }

我不确定这是否是最好的方法,这只是我的头脑