Главная
>>
Каталог задач
>>
Строки
>>
Замена символа строки
Замена символа строки
реализации: C#, количество: 6
Aвтор: this
Дата: 13.08.2003
Просмотров: 426226
Рейтинг:
3/7,4.87(3803)
+
реализации(исходники)
+добавить
Реализация процедуры замены символа строки по конкретному индексу.
Простенькие алгоритмы для тех языков, где нельзя напрямую модифицировать содержимое строки и делать, например: str[2] = "a"
Для вариантов C# время выполнения распределяется примерно так:
- ~0.000534 сек.
- ~0.000854 сек.
- ~0.000256 сек.
- ~0.000260 сек.
Реализации:
C#(6)
+добавить реализацию
1)
№1, code #66[автор:this]
public void ReplaceCharInString(ref String str, int index, Char newSymb)
{
str = str.Remove(index, 1).Insert(index, newSymb.ToString());
}
// либо:
public String ReplaceCharInString(String str, int index, Char newSymb)
{
return str.Remove(index, 1).Insert(index, newSymb.ToString());
}
2)
№2, самый медленный, code #68[автор:this]
public string ReplaceCharInString(String source, int index, Char newSymb)
{
return String.Concat(source.Substring(0, index), newSymb, source.Substring(index + 1));
}
3)
№3, наиболее быстрый вариант!!!, code #74[автор:this]
public String ReplaceCharInString(String source, int index, Char newSymb)
{
char[] chars = source.ToCharArray();
chars[index] = newSymb;
return new String(chars);
}
4)
№4, еще один быстрый вариант, code #75[автор:this]
public String ReplaceCharInString4(String source, int index, Char newSymb)
{
StringBuilder sb = new StringBuilder(source);
sb[index] = newSymb;
return sb.ToString();
}
5)
"по библии", code #559[автор:-]
public void ReplaceCharInString(String source, string oldSymb, string newSymb)
{
return System.Text.RegularExpressions.Regex.Replace(source, oldSymb, newSymb);
}
6)
Ещо быстрее (Unsafe), code #617[аноним:Алексей Соломатин]
public unsafe void ReplaceCharInString(ref String source, int index, Char newSymb)
{
if (index < 0 || index >= source.Length)
throw new IndexOutOfRangeException();
fixed (char* ptr = source)
ptr[index] = newSymb;
}