如果我第一次没有说清楚,我道歉。我在下面用粗体进一步编辑了我的解释。
在下面的程序中,用户输入一个单词,然后输入一个用户想用任何字符替换的字母。例如,用户输入单词“Hello”,替换字母为“l”,带“$”。所以“你好”将成为“他所以”。 首先,目标是找到“l”的位置(示例 - 2,3),然后替换该特定位置的元素。
我首先找到“l”的位置并将其存储在findIndex数组中。每次运行程序时,我都会将“22222”存储在findIndex []数组中。在这一点上,我甚至不确定我是否正在应用正确的逻辑。任何建议将被认真考虑!请不要使用LINQ。
public static void RemoveSpecifiedCharacters()
{
Console.WriteLine("\nWrite a word/sentence: ");
string myString = Console.ReadLine();
Console.Write("Type the character you would like to replace: ");
string myCharacter = Console.ReadLine();
int[] findIndex = new int[myString.Length];
for (int i = 0; i < myString.Length; i++)
{
findIndex[i] = myString.IndexOf(myCharacter, 0);
}
for (int i = 0; i < findIndex.Length; i++)
{
Console.Write(findIndex[i]);
}
}
答案 0 :(得分:0)
以下应该达到目的:
var str = "Hello";
var replaced = str.Replace('l', '$');
答案 1 :(得分:0)
尽管使用String.Replace
更容易,但我只是想解释为什么你会得到[2,2,2,2,2]数组。
首先,IndexOf
方法返回字符首次出现的索引,从0开始。
其次,您正在使用方法重载IndexOf(myCharacter, 0)
,它“说”应始终从字符串的开头执行字符搜索。
为避免此问题,您应该使用IndexOf(myCharacter, i, 1)
来将搜索设置为从第i个字符开始,而不是字符串的开头。
答案 2 :(得分:0)
我想一个简单的解决方案是将字符串拆分成字符数组,然后进行比较? 例如:
Console.WriteLine("\nWrite a word/sentence: ");
char[] myString = Console.ReadLine().ToCharArray();
Console.Write("Type the character you would like to replace: ");
char myCharacter = Console.ReadLine().ToCharArray()[0];
int[] findIndex = new int[myString.Length];
int indexCount = 0;
for (int i = 0; i < myString.Length; i++)
{
if (myString[i] == myCharacter)
findIndex[indexCount++] = i;
}
for (int i = 0; i < indexCount; i++)
{
Console.Write(findIndex[i]);
}
答案 3 :(得分:0)
这可能是你想要的:
public static void RemoveSpecifiedCharacters()
{
Console.WriteLine("\nWrite a word/sentence: ");
string myString = Console.ReadLine();
Console.Write("Type the character you would like to replace: ");
string myCharacter = Console.ReadLine();
List<int> findIndex = new List<int>();
int offs = 0;
while (offs < myString.Length)
{
offs = myString.IndexOf(myCharacter, offs);;
if (offs == -1)
break;
findIndex.Add(offs);
offs++;
}
for (int i = 0; i < findIndex.Count; i++)
{
Console.Write(findIndex[i]);
}
}
设置字符串开头的初始偏移量,如果未找到退出则尝试查找所需字符的索引,否则存储位置&amp;增加偏移量,以便在找到的位置后开始下一个循环。然后继续循环。
由于您不知道将找到多少个字符,因此列表优于存储结果的数组。它随后可以转换为带有.ToArray()的数组。