Member 13935962 Ответов: 1

Как добавить файл в проект, найти и заменить символы, а затем Сохранить как новый файл?


Этот код теперь бросает мне ошибки... Я действительно Новичок в Visual Studio и C# ошибки, которые я постоянно получаю, находятся под = недопустимым токеном '=' в структуре класса или объявлении члена интерфейса
"|" дает мне тип ошибки ожидаемый Кортеж должен содержать как минимум два элемента ) ожидаемый
Типа ожидается
Кортеж должен содержать не менее двух элементов. ) ожидаемый
недопустимый токен @"C:\Users\Documents\test_shared_folder\EDITest3.txt-в объявлении класса, структуры или элемента интерфейса.

что означают эти ошибки??

Что я уже пробовал:

using System.IO;

namespace text
{
	internal class Replace
	{
		string text = File.ReadAllText(@"C:\Users\OneDrive\Desktop\EDI_Examples_855_Orders\ftpedi.edi855_o_1397.EDI.16701");
		text = text.Replace("|","*");
File.WriteAllText(@"C:\Users\Documents\test_shared_folder\EDITest3.txt", text);
	}
}

1 Ответов

Рейтинг:
2

Eric Lynch

Вам нужно потратить немного больше времени на изучение синтаксиса C#, а именно на изучение методов:

Методы (Руководство По Программированию На C#) | Microsoft Docs[^]

На уровне класса вам действительно разрешено только объявлять вещи. Здесь есть немного обмана, потому что вы можете предоставить инициализации для вещей, которые вы объявляете. Так что, в какой-то степени, вы тоже можете делать вещи (в ограниченной форме).

Как правило, если вы хотите что-то делать, они должны быть внутри метода. Так, например, следующее позволит вам скомпилировать ваш код. Хотя вам нужно было бы добавить вызов функции DoSomeStuff метод в другом месте.

using System.IO;

namespace text
{
  internal class Replace
  {
    string text = File.ReadAllText(@"C:\Users\OneDrive\Desktop\EDI_Examples_855_Orders\ftpedi.edi855_o_1397.EDI.16701");

    internal void DoSomeStuff()
    {
      text = text.Replace("|", "*");
      File.WriteAllText(@"C:\Users\Documents\test_shared_folder\EDITest3.txt", text);
    }
  }
}


Остается очевидный вопрос о курице и яйце. Если мне нужно сделать что-то в методе и вызвать метод, как все это начинается? Это зависит от типа приложения. Для консольных приложений это обычно происходит в Main метод. Для других приложений он обычно находится в методе, который обрабатывает некоторое внешнее событие и вызывается .NET framework, когда происходит событие.


Member 13935962

Так что не могли бы вы немного приглушить это для меня... единственный опыт работы с Visual Studio и C# - это учебные пособия и классы, которые я взял в интернете... Я видел основной метод, но я не уверен, куда его поместить... когда я вставляю код выше, я получаю ошибку

Ошибка CS5001 программа не содержит статического метода "Main", подходящего для Точки входа ConsoleApp23 c:\users\source\repos\ConsoleApp23\ConsoleApp23\CSC 1 активный

В этом проекте у меня есть папка под названием text, в этой папке находится replace.cs

и у меня также есть программа.cs, которая была создана, когда я начал проект.

Код, который я вставил выше, находится на странице replace.cs...

Так что я действительно запутался в том, где строить вещи

спасибо

Eric Lynch

Возможно, ты захочешь начать все сначала. При первом создании проекта консольного приложения он содержит файл Program.cs, содержащий класс программы и статический метод Main. Основной метод автоматически вызывается операционной системой при выполнении программы. Судя по ошибке, которую вы упомянули, похоже, что вы каким-то образом удалили (или незаконно изменили) файл Program.cs.

Традиционно, когда люди начинают программировать, они начинают с написания приложения "Hello World". Я бы убедился, что вы полностью понимаете это, прежде чем двигаться дальше.

Смотрите: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/hello-world-your-first-program

Member 13935962

Итак, я начал все сначала, как вы предложили, и я не получаю ошибок, но код не добавляет новый файл в мои общие папки. У меня есть файл Program.cs со следующим кодом:
использование системы;
использование системы.ИО;

пространство имен ConsoleApp23
{
классная программа
{
static void Main(string[] args)
{
Приставка.WriteLine("Привет, Мир!");
}
}
}

а потом у меня есть текстовая папка, в которой находится файл Replace.cs со следующим кодом:
использование системы.ИО;

текст пространства имен
{
внутренний класс заменить
{
строка text = File.ReadAllText(@"C:\Users\OneDrive\Desktop\EDI_Examples_855_Orders\ftpedi-Да.EDI01-00722615.355");

внутренняя пустота DoSomeStuff()
{
text = text.Replace("*", "+");
Файл.WriteAllText(@"C:\Users\Documents\test_shared_folder\EDITest3.txt", текст);
}
}

Eric Lynch

Похоже, вам нужен короткий путь к изучению C#. Их не существует. Вы должны прочитать гораздо больше и научиться понимать. Как минимум, вам нужно понять большие строительные блоки. Такие вещи, как: Что такое классы? Что такое методы? Как используются методы?

В этом случае у вас есть класс Replace и метод DoSomeStuff, которые просто никогда не используются. Синтаксис в порядке, так что они будут компилироваться нормально, и вы не получите никаких ошибок.

Итак, задайте себе несколько вопросов. Почему моя программа выводит "Hello World!"? Кто создает экземпляр программы класса? Кто вызывает основной метод в классе программы? Ответы просты. При создании консольного приложения по умолчанию операционная система создает экземпляр класса Program и вызывает метод Main. Все это объясняется в ссылке "Hello World", которой я поделился.

Теперь задайте себе те же вопросы о классе Replace и методе DoSomeStuff. Кто создает экземпляр класса Replace? Кто вызывает метод DoSomeStuff в классе Replace? Ответ заключается в следующем. Ничто не создает класс Replace...вы не включаете никакого кода, чтобы сделать это. Ничто не вызывает метод DoSomeStuff...вы не включаете никакого кода, чтобы сделать это.

Как уже говорилось, консольные приложения имеют некоторые стандартные модели поведения для класса программы и его основного метода. Вот и все...больше ничего. Они не имеют поведения по умолчанию для других классов или других методов. Эти классы и методы сидят там и ничего не делают, пока вы не предоставите код для их фактического использования.

Все это восходит к основам. Класс-это в основном описание чего-то: автомобиля, здания, куска ворса живота или чего-то еще. Само по себе, это всего лишь описание. Пока вы на самом деле не создадите автомобиль, или здание, или (фу) живот ворса, у вас есть описание, которое сидит там и ничего не делает. Когда вы создаете класс, он называется instantation. В C# создается экземпляр класса с ключевым словом "new".

Например, в метод (например, Main) можно добавить следующее:

Заменить заменитель = новая замена();

Более короткий синтаксис выглядит следующим образом:

ВАР заменитель = новый заменить();

После того как вы создали экземпляр класса Replace, вы можете ссылаться на любую из его доступных констант, полей, свойств или методов. Например, если вы хотите вызвать его метод DoSomeStuff, синтаксис будет следующим:

заменитель.Dosomestuff содержит();

Пожалуйста, вернитесь и прочитайте гораздо больше о синтаксисе C#. Есть много прекрасных книг на эту тему. Кроме того, нижеследующее может служить хорошей отправной точкой со ссылками на многие соответствующие темы.

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/

Мы все начинаем где-то, и многие люди на этом сайте, включая меня, готовы оказать вам некоторую помощь, когда вы застряли. Похоже, у вас хорошая интуиция в синтаксисе. Моя рекомендация состояла бы в том, чтобы прочитать немного больше, а затем поиграть с некоторыми примерами кода, которые доступны в интернете, пока вы действительно не поймете, как они собраны вместе и работают. Их там целая куча.

Попытка изучить основы из вопросов и ответов не очень эффективна.

Надеюсь, это поможет. Желаю удачи.

Member 13935962

спасибо Вам за ваши комментарии! Я пытался обернуть свою голову вокруг C# и visual studio... Спасибо Вам за ссылки, которые помогут мне узнать больше.

Eric Lynch

это займет некоторое время, потому что есть много, чтобы узнать, но это стоит усилий. хорошая новость: как только вы изучили синтаксис C#, Вы в значительной степени также изучили синтаксис Java...они очень похожи :) удачи!