Skip to content

Commit 6b33c5b

Browse files
committed
Lesson 16
1 parent 9aeaf13 commit 6b33c5b

File tree

3 files changed

+160
-0
lines changed

3 files changed

+160
-0
lines changed

Diff for: CSharpCourse_Homework.sln

+6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lesson_014", "Lesson_014\Le
2323
EndProject
2424
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lesson_015", "Lesson_015\Lesson_015.csproj", "{6A3D2F83-A610-46E4-B19E-5FA28E65841E}"
2525
EndProject
26+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lesson_016", "Lesson_016\Lesson_016.csproj", "{82B62853-8A1F-4162-9E4B-0D604786EC2A}"
27+
EndProject
2628
Global
2729
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2830
Debug|Any CPU = Debug|Any CPU
@@ -69,6 +71,10 @@ Global
6971
{6A3D2F83-A610-46E4-B19E-5FA28E65841E}.Debug|Any CPU.Build.0 = Debug|Any CPU
7072
{6A3D2F83-A610-46E4-B19E-5FA28E65841E}.Release|Any CPU.ActiveCfg = Release|Any CPU
7173
{6A3D2F83-A610-46E4-B19E-5FA28E65841E}.Release|Any CPU.Build.0 = Release|Any CPU
74+
{82B62853-8A1F-4162-9E4B-0D604786EC2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
75+
{82B62853-8A1F-4162-9E4B-0D604786EC2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
76+
{82B62853-8A1F-4162-9E4B-0D604786EC2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
77+
{82B62853-8A1F-4162-9E4B-0D604786EC2A}.Release|Any CPU.Build.0 = Release|Any CPU
7278
EndGlobalSection
7379
GlobalSection(SolutionProperties) = preSolution
7480
HideSolutionNode = FALSE

Diff for: Lesson_016/Lesson_016.csproj

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
</PropertyGroup>
8+
9+
</Project>

Diff for: Lesson_016/Program.cs

+145
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
/***********************************************************************************************************************************
2+
1. Вам дана строка "A journey of a thousand miles begins with a single step." Выполните задания ниже.
3+
Все манипуляции проводите, не изменяя исходную строку, то есть, не переприсваивая исходную переменную.
4+
1.1. Выведите в консоль её длину.
5+
1.2. Выведите в консоль первый символ.
6+
1.3. Выведите в консоль 16-й символ.
7+
1.4. Выведите в консоль последний символ (несколькими способами).
8+
1.5. Выведите в консоль пятый символ с конца (несколькими способами).
9+
1.6. Найдите индекс первого вхождения слова "begins" (существует специальный метод).
10+
Выведите его в консоль в виде "The word "begins" found at index 30".
11+
1.7. Получитие подстроку "begins with a single step." и выведите её в консоль.
12+
Чтобы не высчитывать стартовый индекс вручную, используйте индекс, полученный на предыдущем шаге.
13+
1.8. Получитие подстроку "thousand miles" и выведите её в консоль.
14+
1.9. Удалите подстроку "a thousand miles begins with", чтобы осталось только "A journey of a single step.".
15+
Выведите в консоль получившуюся строку "A journey of a single step.".
16+
1.10. В последней получившейся строке "A journey of a single step." замените "a single step" на "multiple steps".
17+
В итоге должно получиться "A journey of multiple steps."
18+
1.11. В последнюю строку вставьте слово "wonderful". В итоге должно получиться "A wonderful journey of multiple steps.".
19+
1.12. Проверьте, что строка начинается с подстроки "A wonderful journey".
20+
1.13. Отрежьте точку в конце, то есть, должно остаться только "A wonderful journey of multiple steps".
21+
Приведите несколько вариантов того, как это можно сделать.
22+
1.14. Проверьте, что строка оканчивается на подстроку "multiple steps".
23+
1.15. Разбейте последнюю получившуюся строку на отдельные слова.
24+
Должен получиться массив ["A", "wonderful", "journey", "of", "multiple", "steps"].
25+
1.16. Склейте обратно все слова в одну строку, но уже с разделителем "; ".
26+
Должна получиться строка "A; wonderful; journey; of; multiple; steps".
27+
1.17. Определите, содержит ли строка из пункта выше подстроку "wonderful journey".
28+
***********************************************************************************************************************************/
29+
30+
string phrase = "A journey of a thousand miles begins with a single step.";
31+
32+
33+
/********************************************************************************************************************************************
34+
2. Создайте из строки из первого задания объект "StringBuilder". Все манипуляции из заданий ниже должны выполняться именно
35+
с изначально созданным объектом "StringBuilder". Он не должен пересоздаваться или приводиться к строке методом "ToString".
36+
2.1. Выведите в консоль строку, которую он содержит.
37+
2.2. Выведите в консоль длину строки, которую он содержит.
38+
2.3. Выведите в консоль 25-й символ.
39+
2.4. Выведите в консоль второй символ с конца (несколькими способами).
40+
2.5. Измените последний символ на '!'. Выведите получившуюся строку в консоль.
41+
2.6. Обрежьте строку до первых 29 символов. Предложите несколько вариантов это сделать.
42+
Выведите полученную строку в консоль.
43+
2.7. Увеличьте строку обратно до 56 символов (только её длину). Выведите её в консоль, а также её длину.
44+
Почему длина равна 56, а в консоли мы всё также видим только 29 символов?
45+
2.8. Восстановите исходную строку, не пересоздавая объект "StringBuilder". Предложите несколько вариантов.
46+
2.9. Превратите строку "A journey of a thousand miles begins with a single step." в строку
47+
"A-journey-of-a-thousand-miles-begins-with-a-single-step.".
48+
2.10. Очистите "StringBuilder". Добавьте слова "One", "Two" и "Three", разделённые запятой. Не компонуйте необходимую
49+
строку вручную, чтобы добавить её целиком. Вам нужно добавить три слова через разделитель используя методы "StringBuilder".
50+
В результате должно получиться "One,Two,Three". Предложите несколько вариантов это сделать.
51+
********************************************************************************************************************************************/
52+
53+
54+
/**********************************************************************************************
55+
3. Для строки ниже я пытаюсь получить последний символ '!', но почему-то получаю ошибку.
56+
В чём причина? Исправьте код.
57+
**********************************************************************************************/
58+
59+
/*
60+
Индекс последнего символа определён неверно. Индексирование начинается с нуля, а значит индекс последнего символа будет не 10, а 9.
61+
Но лучше использовать специальный синтаксис указания индекса с конца.
62+
*/
63+
64+
string greeting = "Hi, there!";
65+
Console.WriteLine(greeting[10]);
66+
67+
68+
/*********************************************************************************************************
69+
4. Вам дана строка. Выполните задания ниже. Все манипуляции проводите, не изменяя исходную строку.
70+
4.1. Обрежьте пробельные символы только в начале и выведите в консоль.
71+
4.2. Обрежьте пробельные символы только в конце и выведите в консоль.
72+
4.3. Обрежьте пробельные символы с обоих сторон и выведите в консоль.
73+
4.4. Обрежьте с обоих сторон не только пробельные символы, но и символы '$' и '*'.
74+
*********************************************************************************************************/
75+
76+
string str = "\t **$$ Stay curious, stay inspired!! $$** \n";
77+
78+
79+
/*******************************************************************************************************************
80+
5. Я разбиваю входящую строку на подстроки по разделителю ";". Далее я вывожу полученные части в консоль.
81+
Но в консоли для некоторых строк я почему-то вижу ведущий пробел, хотя он мне не нужен.
82+
Предложите варианты, как можно избавиться от данного ведущего пробела, если:
83+
5.1. Формат входящей строки гарантирует, что разделитель всегда, помимо точки с запятой,
84+
будет содержать ещё и пробел, то есть, возможен только единственный вариант "; ".
85+
5.2. Формат входящей строки гарантирует, что разделитель всегда будет содержать ";", но он может
86+
быть как с пробелом, так и без, то есть, возможны варианты ";" и "; ". Например, строка может
87+
выглядеть как "One; Two;Three".
88+
5.3. Аналогично пункту 5.2, но также ещё могут встречаться пустые вхождения, которые вам нужно отсекать.
89+
То есть, входящая строка может выглядеть как "One; Two;Three; ;Four;;Five;Six".
90+
91+
Для примера входящая строка состоит только из трёх частей, но давайте предположим, что в реальности она
92+
может содержать сотни частей.
93+
*******************************************************************************************************************/
94+
95+
string inputString = "One; Two; Three";
96+
string[] parts = inputString.Split(';');
97+
DisplayStringParts(parts);
98+
99+
// Вспомогательный метод для вывода частей строки в консоль. Его трогать не нужно.
100+
static void DisplayStringParts(string[] parts)
101+
{
102+
foreach (string part in parts)
103+
{
104+
Console.WriteLine($"\"{part}\"");
105+
}
106+
}
107+
108+
109+
/***********************************************************************************************************************************
110+
6. Проверка строк на пустоту.
111+
6.1. Объявите пустую строку несколькими способами.
112+
6.2. Объявите строковую переменную, содержащую значение "null".
113+
6.3. Объявите строковую переменную, содержащую только пробельные символы различного характера.
114+
6.4. Проверьте все выше созданные строки на пустую строку.
115+
6.5. Проверьте все выше созданные строки на пустую строку или "null".
116+
6.6. Проверьте все выше созданные строки на пустую строку, "null" или строку, состоящую только из пробельных символов.
117+
***********************************************************************************************************************************/
118+
119+
120+
/***********************************************************************************************************************************
121+
7. Вы написали функцию, которая проверяет, содержит ли переданная строка символ '.'. Вы пытаетесь передать в неё различные
122+
данные, включая строки, числа, символы и даже объект "StringBuilder". Но некоторые строки кода не компилируются.
123+
Раскомментируйте их и предложите вариант исправления.
124+
***********************************************************************************************************************************/
125+
126+
Console.WriteLine(ContainsDot("I love .NET"));
127+
//Console.WriteLine(ContainsDot(new StringBuilder("Hi there!")));
128+
//Console.WriteLine(ContainsDot(5.78));
129+
//Console.WriteLine(ContainsDot('.'));
130+
131+
132+
static bool ContainsDot(string str)
133+
{
134+
return str.Contains('.', StringComparison.Ordinal);
135+
}
136+
137+
138+
/*******************************************************************************************************
139+
8. Выведите число PI с 7-ю знаками после запятой в текущей культуре и в культуре Британии (en-GB).
140+
*******************************************************************************************************/
141+
142+
143+
/*********************************************************************************************************************
144+
9. Создайте дату 2024-12-07 и выведите её в текущей культуре, культуре США (en-US) и культуре Китая (zh-CN).
145+
*********************************************************************************************************************/

0 commit comments

Comments
 (0)