我想用另一个字符串替换以特定字符开头的字符串,直到那之后的第一个空格(或者可能是第一个特定字符)。
例如,如果我们有这样的字符串:
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
或@
开始。
答案 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;
}
我不确定这是否是最好的方法,这只是我的头脑