Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4023854
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T10:38:58+00:00 2026-05-20T10:38:58+00:00

Need some help for creating a File and String search engine. The program needs

  • 0

Need some help for creating a File and String search engine.
The program needs to get the user to enter the name of the file then enter the name of a search string the print a search result file, store it then ask the user if they want another selection.
This is what i have so far:

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

public class SwitchTest
{
    private const int tabSize = 4;
    private const string usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt";
    public static void Main(string[] args)
    {

        string userinput;

        Console.WriteLine("Please enter the file to be searched");
        userinput = Console.ReadLine();

        using (StreamReader reader = new StreamReader("test.txt"))
        {
            //Read the file into a stringbuilder
            StringBuilder sb = new StringBuilder();
            sb.Append(reader.ReadToEnd());
            Console.ReadLine();
        }
        {
            StreamWriter writer = null;

            if (args.Length < 2)
            {
                Console.WriteLine(usageText);
                return;
            }

            try
            {
                // Attempt to open output file.
                writer = new StreamWriter(args[1]);
                // Redirect standard output from the console to the output file.
                Console.SetOut(writer);
                // Redirect standard input from the console to the input file.
                Console.SetIn(new StreamReader(args[0]));
            }
            catch (IOException e)
            {
                TextWriter errorWriter = Console.Error;
                errorWriter.WriteLine(e.Message);
                errorWriter.WriteLine(usageText);
                return;
            }

            writer.Close();
            // Recover the standard output stream so that a 
            // completion message can be displayed.
            StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
            standardOutput.AutoFlush = true;
            Console.SetOut(standardOutput);
            Console.WriteLine("COMPLETE!", args[0]);

            return;


        }
    }
}

I am rubbish at programming so keep it simple with the terminology xD

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T10:38:59+00:00Added an answer on May 20, 2026 at 10:38 am

    I don’t really know what you want, but if you want to search a file for all occurances of a string, and want to return the position (line and column) then this might help:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace CS_TestApp
    {
        class Program
        {
            struct Occurrence
            {
                public int Line { get; set; }
                public int Column { get; set; }
                public Occurrence(int line, int column) : this()
                {
                    Line = line;
                    Column = column;
                }
            }
    
            private static string[] ReadFileSafe(string fileName)
            {
                // If the file doesn't exist
                if (!File.Exists(fileName))
                    return null;
    
                // Variable that stores all lines from the file
                string[] res;
    
                // Try reading the entire file
                try { res = File.ReadAllLines(fileName, Encoding.UTF8); }
                catch (IOException) { return null; }
                catch (ArgumentException) { return null; }
    
                return res;
            }
    
            private static List<Occurrence> SearchFile(string[] file, string searchString)
            {
                // Create a list to store all occurrences of substring in the file
                List<Occurrence> occ = new List<Occurrence>();
    
                for (int i = 0; i < file.Length; i++) // Loop through all lines
                {
                    string line = file[i]; // Save the line
                    int totalIndex = 0; // The total index
                    int index = 0; // The relative index (the index found AFTER totalIndex)
                    while (true) // Loop until breaks
                    {
                        index = line.IndexOf(searchString); // Search for the index
                        if (index >= 0) // If a string was found
                        {
                            // Save the occurrence to our list
                            occ.Add(new Occurrence(i, totalIndex + index));
                            totalIndex += index + searchString.Length; // Add the total index and the searchString
                            line = line.Substring(index + searchString.Length); // Cut of the searched part
                        }
                        else break; // If no more occurances found
                    }
                }
    
                // Here we have our list filled up now we can return it
                return occ;
            }
    
            private static void PrintFile(string[] file, List<Occurrence> occurences, string searchString)
            {
                IEnumerator<Occurrence> enumerator = occurences.GetEnumerator();
                enumerator.MoveNext();
                for (int i = 0; i < file.Length; i++)
                {
                    string line = file[i];
                    int cutOff = 0;
                    do
                    {
                        if (enumerator.Current.Line == i)
                        {
                            Console.Write(line.Substring(0, enumerator.Current.Column - cutOff));
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write(searchString);
                            Console.ResetColor();
                            line = line.Substring(enumerator.Current.Column + searchString.Length - cutOff);
                            cutOff = enumerator.Current.Column + searchString.Length;
                        }
                        else break;
                    }
                    while (enumerator.MoveNext());
                    Console.WriteLine(line); // Write the rest
                }
            }
    
            private static bool WriteToFile(string file, List<Occurrence> occ)
            {
                StreamWriter sw;
                try { sw = new StreamWriter(file); }
                catch (IOException) { return false; }
                catch (ArgumentException) { return false; }
    
                try
                {
                    foreach (Occurrence o in occ)
                    {
                        // Write all occurences
                        sw.WriteLine("(" + (o.Line + 1).ToString() + "; " + (o.Column + 1).ToString() + ")");
                    }
    
                    return true;
                }
                finally
                {
                    sw.Close();
                    sw.Dispose();
                }
            }
    
            static void Main(string[] args)
            {
                bool anotherFile = true;
                while (anotherFile)
                {
                    Console.Write("Please write the filename of the file you want to search: ");
                    string file = Console.ReadLine();
                    Console.Write("Please enter the string to search for: ");
                    string searchString = Console.ReadLine();
    
                    string[] res = ReadFileSafe(file); // Call our search method
                    if (res == null) // If it either couldn't open the file, or the file didn't exist
                        Console.WriteLine("Couldn't open the read file.");
                    else // If the file was opened
                    {
                        Console.WriteLine();
                        Console.WriteLine("File:");
                        Console.WriteLine();
    
                        List<Occurrence> occ = SearchFile(res, searchString); // Search the file
                        PrintFile(res, occ, searchString); // Print the result
    
                        Console.WriteLine();
    
                        Console.Write("Please enter the file you want to write the output to: ");
                        file = Console.ReadLine();
                        if (!WriteToFile(file, occ))
                            Console.WriteLine("Couldn't write output.");
                        else
                            Console.WriteLine("Output written to: " + file);
    
                        Console.WriteLine();
                    }
    
                    Pause("continue");
    
                requestAgain:
                    Console.Clear();
                    Console.Write("Do you want to search another file (Y/N): ");
                    ConsoleKeyInfo input = Console.ReadKey(false);
                    char c = input.KeyChar;
    
                    if(c != 'y' && c != 'Y' && c != 'n' && c != 'N')
                        goto requestAgain;
    
                    anotherFile = (c == 'y' || c == 'Y');
                    if(anotherFile)
                        Console.Clear();
                }
            }
    
            private static void Pause(string action)
            {
                Console.Write("Press any key to " + action + "...");
                Console.ReadKey(true);
            }
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need some help calculating Pi. I am trying to write a python program
I need some help reading data from a text file into my ArrayList .
I need some help creating this extension method. My view inherits from <%@ Page
Ok need some help, I have a system I'm creating that will allow users
I need some help from the shell-script gurus out there. I have a .txt
I need some help regarding algorithm for randomness. So Problem is. There are 50
I need some help with jQuery script again :-) Just trying to play with
I need some help ... I'm a bit (read total) n00b when it comes
Hi I need some help with the following scenario in php. I have a
I am getting a little confused and need some help please. Take these two

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.