2016-02-04 3 views
-2

Я пытаюсь реализовать функцию замены строк, однако мне удалось сделать замену символа (код ниже). Для замены строки я искал источник справочной системы Microsoft, который имеет меньше комментариев. Хотя я искал код строкового кода, я не мог его хорошо понять, и я теряюсь. Цените, если кто-нибудь может помочь мне с указаниями/идеей о том, как это сделать.Реализация функции замены строки

// Этот метод содержит те же функции, что и StringBuilder Replace. Единственное отличие состоит в том, что // новая строка должна быть выделена, поскольку строки являются неизменяемыми

это то, что я имел для полукокса Replacment

public string StringReplaceUtil(string str, char find, char replace) 
{ 
    char[] ch = new char[str.Length]; 
    int j=0; 
    ch = str.ToCharArray(); 
    for (int i = 0; i < ch.Length; i++) 
    { 
     if (ch[i] == find) 
      ch[j] = replace; 
     else 
      ch[j] = ch[i]; 
     j++; 
    } 
    return new string(ch).Substring(0,j); 
} 
+1

Почему не используется метод String.Replace()? вы можете заменить символ или целую строку! ! ! – Younes

+0

Почему? вниз? - кто бы это ни мог, объясните причину ?! – Kar

+0

Я бы рекомендовал проверить обсуждение META, чтобы получить SO-позицию для комментариев для downvotes - http://meta.stackoverflow.com/questions/315431/allow-downvote-only-with-comment –

ответ

2

Я не знаю, почему вы не используете строку .replace(). Это сделает то, что вы пытаетесь сделать, не выполняя никакого нового кода.

string line = "This is a test string" 
string find = "a" 
string replace = "an awesome" 

console.write(line.replace(find, replace)) 

возвращается:

"This is an awesome test string" 
+0

, конечно, я знаю есть функция замены, и я могу ее использовать. Но дело не в том, чтобы опубликовать этот вопрос. Прочтите заголовок правильно. Если вам все еще нужно, почему я хочу это сделать, я готовлюсь к интервью, надеюсь, что это поможет. – Kar

2

Исправлена ​​ошибка в коде является то, что вам не нужен отдельный индекс J, просто использовать я все время. Хотя, как указывали другие, не делайте этого в любом случае.

char[] ch = str.ToCharArray(); 
for (int i = 0; i < ch.Length; i++) 
{ 
    if (ch[i] == find) 
     ch[i] = replace; 
} 

вам нужен более сложный код, если вы заменяете со строкой, а не характер

+0

Спасибо за указание на ошибку. Да, я знаю, что это определенно сложно, но хотелось бы знать, как это решить. Из ответов, которые я получил, я думаю, это не место, чтобы просить о внедрении встроенных функций или, по крайней мере, знать, как это сделать. Очень разочарован. – Kar

+0

@Kar вы можете задать вопрос, но ясно, что вы делаете это как упражнение. IT не было ясно, что вы знали, что уже существует функция, которая точно вам нужна, люди просто говорили «почему бы не использовать функцию exisitng»? – pm100

+0

«Для замены строки я искал источник справочных материалов Microsoft, который ниже комментариев». , И "// Этот метод содержит ту же функциональность, что и StringBuilder Replace. Единственное отличие состоит в том, что // новая строка должна быть выделена, поскольку строки являются неизменяемыми". Это из моего поста. Это довольно ясно, что я знаю, что есть функция и перешел к исходному источнику, чтобы увидеть его реализацию. Если нет, я сожалею. Что меня удивляет нисходящим голосом + голосов за 1-й ответ. – Kar

Смежные вопросы