Вывести частоту символов в строке и заменить строку другой подстрокой
Требовалось из строк создать текст и уже в нём подсчитать частоту появления символов и заменить строку подстрокой. Попытался это сделать в последних двух функциях, но
Ошибка CS1061 "MyString[]" не содержит определения для "Replace", и не удалось найти доступный метод расширения "Replace", принимающий тип "MyString[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Ошибка CS0161 "Text.Replacement(MyString, MyString)": не все ветви кода возвращают значение.
Ошибка CS0019 Оператор "!=" невозможно применить к операнду типа "MyString" и "char". (Подскажите, пожалуйста
class Text
{
int size;
MyString[] myStrings;
public int Size
{
get
{
return size;
}
}
public Text()
{
size = 0;
}
public void AddString(MyString str)
{
Array.Resize(ref myStrings, ++size);
myStrings[size - 1] = str;
}
public void RemoveString(int delIndex)
{
if (delIndex > size)
{
throw new IndexOutOfRangeException();
}
var newData = new MyString[myStrings.Length - 1];
for (int i = 0; i < delIndex; i++)
{
newData[i] = myStrings[i];
}
for (int i = delIndex; i < newData.Length; i++)
{
newData[i] = myStrings[i + 1];
}
myStrings = newData;
size--;
}
public void Erase()
{
myStrings = new MyString[0];
size = 0;
}
public int Allsymbols()
{
int symbols = 0;
foreach (var item in myStrings)
{
symbols += item.Count();
}
return symbols;
}
public void Counting()
{
int Count = 0;
var itm = '\\';
foreach (var item in myStrings)
{
foreach (var cha in myStrings)
if (cha != itm && cha == item)
Count++;
if (Count != 0)
Console.WriteLine("Количество символов {0} = {1}", item, Count);
Count = 0;
itm = item;
}
}
public void Replacement( MyString str1, MyString str2)
{
string[] words = myStrings.Split(' ');
myStrings.Replace(str1, str2);
}
}
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var str1 = new MyString("adafaf");
var str2 = new MyString("123123");
var str3 = new MyString("!#!$$");
var str4 = new MyString("asdasfdfwfwew123");
Text text = new Text();
text.AddString(str1);
text.AddString(str2);
text.AddString(str3);
text.AddString(str4);
//text.RemoveString(1);
//text.Erase();
Console.WriteLine(text.Counting());
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic; using System.Text;
namespace ConsoleApp1 { class MyString { char[] mystring;
public char[] ToChar
{
get
{
return mystring;
}
}
public MyString(char[] ch)
{
mystring = ch;
}
public MyString(string str)
{
mystring = str.ToCharArray();
}
public MyString()
{
}
public int Count()
{
return mystring.Length;
}
public int Numbers()
{
int num = 0;
for (int i = 0; i < mystring.Length; i++)
{
if (char.IsDigit(mystring[i]))
{
num++;
}
}
return num;
}
}
}
введите сюда код
Ответы (1 шт):
Ошибка CS1061 "MyString[]" не содержит определения для "Replace", и не удалось найти доступный метод расширения "Replace", принимающий тип "MyString[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
string[] words = myStrings.Split(' ');
foreach (var word in words)
{
word.Replace(str1, str2);
}
Ошибка CS0161 "Text.Replacement(MyString, MyString)": не все ветви кода возвращают значение.
я не нашел в выложенном вами коде источника этой ошибки
Ошибка CS0019 Оператор "!=" невозможно применить к операнду типа "MyString" и "char".
здесь вы пытаетесь сравнить массив символов с символом
if (cha != itm
Попробуйте еще один цикл, перебирающий символы внутри cha.
Старайтесь не использовать var, это усложняет читаемость кода, используйте сразу нужный тип.