C# 用空格数替换字符串中的每个空格
我有以下挑战。我需要用一个数字来替换字符串中的每个空格,该数字指示有多少空格。 例如:“你好,世界!”;应修改为“Hello1World2!”; 如何在c#中实现这一点。请帮助C# 用空格数替换字符串中的每个空格,c#,regex,C#,Regex,我有以下挑战。我需要用一个数字来替换字符串中的每个空格,该数字指示有多少空格。 例如:“你好,世界!”;应修改为“Hello1World2!”; 如何在c#中实现这一点。请帮助//您的基本字符串值 //your base string value string baseString = "Hello World !"; for (int i = 0; i < baseString.Length; i++) {
//您的基本字符串值
//your base string value
string baseString = "Hello World !";
for (int i = 0; i < baseString.Length; i++)
{
//check if have empty sumbol by position in string
if (baseString[i] == ' ')
{
//replace symbol logic
System.Text.StringBuilder sb = new System.Text.StringBuilder(baseString);
//here you can add logic for random number
sb[i] = '1';
baseString = sb.ToString();
}
}
string baseString=“你好,世界!”;
for(int i=0;i
是否是空格数(''=1,'=3(应为一行中的3个空格)?如果第一个空格为1,第二个空格为2,以此类推
如果是每个空间的“索引”编号,请尝试以下操作:
private void SpaceNumber()
{
StringBuilder sb = new StringBuilder();
int sc = 1;
string input = "bla absldf el kdslf ael dls ale xyz";
foreach (string x in input.Split(' '))
{
sb.Append(x);
sb.Append(sc);
sc++;
}
sb.Remove(sb.Length - 1, 1);
string output = sb.ToString();
}
这应该可以帮助你。 我在工作中没有可用的DEV工具,所以将其视为伪代码:
string testString = "Hello World !";
int spaceCounter = 0;
for (int i = 0; i<testString.length; i++)
{
if (testString.charAt(i) == " ")
{
spaceCounter++;
testString.CharAt(i) = spaceCounter.toString();
}
}
string testString=“你好,世界!”;
int spaceCounter=0;
对于(inti=0;i很好的答案
现在轮到我了:
string theWords = "Hello World of C Sharp!";
int i = 1;
int pos = theWords.IndexOf(' ');
while (pos >= 0)
{
theWords = theWords.Substring(0, pos) + i.ToString() + theWords.Substring(pos + 1);
pos = theWords.IndexOf(' ');
i++;
}
我希望这对你有用:
string testString = "Hello World ! ";
StringBuilder resultBuilder = new StringBuilder();
int charCount = 0;
foreach(char character in testString)
{
if(Char.IsWhiteSpace(character))
{
charCount++;
}
else
{
if(charCount > 0)
{
resultBuilder.Append(charCount);
charCount = 0;
}
resultBuilder.Append(character);
}
}
if (charCount > 0)
{
resultBuilder.Append(charCount);
charCount = 0;
}
testString = resultBuilder.ToString();
我终于得到了一个正则表达式的答案:
使用正则表达式的MatchEvaluator
-类:
using System.Text.RegularExpressions;
static void Main(string[] args)
{
string input = "bla absl ael dls ale ";
var result2 = Regex.Replace(input, "\s+", new MatchEvaluator(ReplaceByCount));
Console.WriteLine(result2);
//returns bla1absl1ael3dls1ale1
}
private static string ReplaceByCount(Match m)
{
return m.Value.Length.ToString();
}
编辑:将“+”替换为“\s+”,以匹配@Marco Forbergs comment之后的所有空白字符
string str = "Hello World !";
string result = str.Split()
.Zip(Enumerable.Range(1, str.Split().Length), (x, y) => x + y)
.Aggregate((x, y) => x + y).Remove(str.Length);
我找到了解决方案。这似乎有点困难,但只要坚持不懈就可以了。我建议您使用C#的StringBuilder类(因此不要错过添加程序集匹配)
这是您可以得到结果的脚本:
string entry = "Hello World !";
StringBuilder stringToBuild = new StringBuilder(entry);
int iForNewValue = 1;
for (int i = 0; i < entry.Length; i++)
{
Console.WriteLine("ITEM [{0}] at {1}", entry[i], i);
if (entry[i].ToString() == " ")
{
Console.WriteLine("=======> SPACE FOUNDED HERE");
stringToBuild.Replace(entry[i].ToString(), iForNewValue++.ToString(), i, 1);
}
}
Console.WriteLine("NEW STRING BUILD ========================> {0}", stringToBuild);
string entry=“你好,世界!”;
StringBuilder stringToBuild=新StringBuilder(条目);
int iForNewValue=1;
for(int i=0;i此处创建空间”);
stringToBuild.Replace(条目[i].ToString(),iForNewValue++.ToString(),i,1);
}
}
Console.WriteLine(“新字符串生成====================>{0}”,stringToBuild);
您最初的想法是什么?您尝试过什么吗?您似乎在向regex(=>tag)的方向搜索。是什么让你认为这是一个好主意?你想让答案只进入正则表达式解决方案吗?请帮助我们帮助你。如果你能提供一个输入和预期输出的示例,那就太棒了。另外,请清楚你所说的空白是什么意思
-这仅仅意味着空间吗?标签呢?回车符?等等我向RegEx提出了这个问题,但你的问题和你的头衔都没有说明RegEx是否真的是一项要求。是吗?@PaulKertscher ith think SKN相信这项任务可以用常规的方法解决expressions@MarcoForberg这就是Paul提问的原因-因此我们不需要“认为他有”,但我们可以“知道他有”;)使用“\s+”不是更好吗还要查找其他空白字符吗?感谢您的慷慨帮助。我最初的尝试是使用regex'\s+'查找所有空格(仅空格)。但是我不知道如何用空格数替换它。谢谢@Chriz。今天我了解了MatchEvaluator。