Skip to content

Commit ef9d79c

Browse files
Update String Topic
1 parent 8ce82af commit ef9d79c

9 files changed

Lines changed: 221 additions & 77 deletions

File tree

docs/programming-languages/string/_c.mdx

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,40 @@ int length = strnlen(myString, sizeof myString);
4646
// ------------------------------------
4747
// Trim
4848
// ------------------------------------
49-
// TODO
49+
// No Native Support.
50+
// Create a helper function or use a library.
51+
// Example trimming leading spaces in-place:
52+
#include <ctype.h> // For isspace()
53+
#include <string.h> // For memmove()
54+
55+
void trim_left(char *value)
56+
{
57+
char *start = value;
58+
59+
while (isspace((unsigned char)*start))
60+
{
61+
start++;
62+
}
63+
64+
memmove(value, start, strlen(start) + 1);
65+
}
5066

5167

5268
// ------------------------------------
5369
// Is Null Or Empty
5470
// ------------------------------------
55-
// TODO
71+
bool isNullOrEmpty = myString == NULL || myString[0] == '\0';
5672

5773

5874
// ------------------------------------
5975
// Transform
6076
// ------------------------------------
61-
// TODO
77+
#include <ctype.h> // For toupper(), tolower()
78+
79+
for (int i = 0; myString[i] != '\0'; i++)
80+
{
81+
myString[i] = (char)toupper((unsigned char)myString[i]);
82+
}
6283

6384
// ------------------------------------
6485
// Compare
@@ -116,11 +137,11 @@ strcat(mainString, addString); // Not Safe
116137

117138

118139
// strcat_s - Since C11
119-
// TODO
140+
strcat_s(mainString, sizeof mainString, addString);
120141

121142

122143
//strncat_s - Since C11
123-
// TODO
144+
strncat_s(mainString, sizeof mainString, addString, count);
124145
```
125146
126147
```C

docs/programming-languages/string/_cpp.mdx

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@ constexpr std::string MY_CONSTANT = "Another String"; // C++11
4040
// ------------------------------------
4141
// Direct Access (Array-Like)
4242
// ------------------------------------
43-
// TODO
43+
char character = myString[0]; // No bounds-checking
44+
char character = myString.at(0); // with bounds-checking
4445

4546

4647
// ------------------------------------
4748
// Size / Length
4849
// ------------------------------------
49-
// TODO
50+
std::size_t length = myString.size();
51+
std::size_t length = myString.length();
5052

5153

5254
// ------------------------------------
@@ -93,25 +95,36 @@ myString.empty()
9395
// ------------------------------------
9496
// Transform
9597
// ------------------------------------
96-
// TODO
98+
#include <algorithm> // For std::transform
99+
#include <cctype> // For std::toupper, std::tolower
100+
101+
std::transform(myString.begin(), myString.end(), myString.begin(),
102+
[](unsigned char character) { return std::toupper(character); });
103+
104+
std::transform(myString.begin(), myString.end(), myString.begin(),
105+
[](unsigned char character) { return std::tolower(character); });
97106

98107

99108
// ------------------------------------
100109
// Compare
101110
// ------------------------------------
102-
// TODO
111+
bool isEqual = myString == otherString;
112+
int result = myString.compare(otherString);
103113

104114

105115
// ------------------------------------
106116
// Copy / Clone
107117
// ------------------------------------
108-
// TODO
118+
std::string copy = myString;
119+
std::string copy {myString};
109120

110121

111122
// ------------------------------------
112123
// Concatenation
113124
// ------------------------------------
114-
// TODO
125+
std::string result = firstString + secondString;
126+
firstString += secondString;
127+
firstString.append(secondString);
115128
```
116129
117130
```Cpp
@@ -201,7 +214,9 @@ std::cout << 7 << '\n';
201214

202215

203216
// Positional Arguments (Re-Ordering the Arguments)
204-
// TODO
217+
// No Native Support with iostreams.
218+
// Use std::format with explicit argument order if supported by the implementation. (Since C++20)
219+
std::string result = std::format("{1} , {0}", "First Argument", "Second Argument");
205220
```
206221

207222
> More Info:

docs/programming-languages/string/_csharp.mdx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,75 @@
33
// Declaration & Initialization
44
// ------------------------------------
55
6-
// TODO
6+
string variableName = "Some string";
7+
string variableName = @"C:\Some\Path";
8+
string variableName = """
9+
Some string
10+
with multiple lines
11+
"""; // Raw string literals (Since C# 11)
712
813

914

1015
// Const Declaration
11-
// TODO
16+
const string MY_CONSTANT = "Some string";
17+
readonly string myReadonlyString = "Some string";
1218

1319

1420
// ------------------------------------
1521
// Direct Access (Array-Like)
1622
// ------------------------------------
17-
// TODO
23+
char character = variableName[0];
1824

1925

2026
// ------------------------------------
2127
// Size / Length
2228
// ------------------------------------
23-
// TODO
29+
int length = variableName.Length;
2430

2531

2632
// ------------------------------------
2733
// Trim
2834
// ------------------------------------
29-
// TODO
35+
string trimmed = variableName.Trim();
36+
string trimmedStart = variableName.TrimStart();
37+
string trimmedEnd = variableName.TrimEnd();
3038

3139

3240
// ------------------------------------
3341
// Is Null Or Empty
3442
// ------------------------------------
35-
// TODO
43+
bool isNullOrEmpty = string.IsNullOrEmpty(variableName);
44+
bool isNullOrWhiteSpace = string.IsNullOrWhiteSpace(variableName);
3645

3746
// ------------------------------------
3847
// Transform
3948
// ------------------------------------
40-
// TODO
49+
string upper = variableName.ToUpper();
50+
string lower = variableName.ToLower();
4151

4252

4353
// ------------------------------------
4454
// Compare
4555
// ------------------------------------
46-
// TODO
56+
bool isEqual = variableName == otherString;
57+
bool isEqual = string.Equals(variableName, otherString, StringComparison.Ordinal);
58+
int result = string.Compare(variableName, otherString, StringComparison.Ordinal);
4759

4860

4961
// ------------------------------------
5062
// Copy / Clone
5163
// ------------------------------------
52-
// TODO
64+
// Strings are immutable.
65+
string copy = variableName;
66+
string copy = string.Copy(variableName); // Obsolete in .NET Core 3.0+
5367
5468

5569
// ------------------------------------
5670
// Concatenation
5771
// ------------------------------------
58-
// TODO
72+
string result = firstString + secondString;
73+
string result = string.Concat(firstString, secondString);
74+
string result = string.Join(", ", values);
5975
```
6076

6177
```Cs

docs/programming-languages/string/_go.mdx

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,69 +3,91 @@
33
// Declaration & Initialization
44
// ------------------------------------
55

6-
// TODO
6+
var variableName string = "Some string"
7+
variableName := "Some string"
8+
variableName := `Some string
9+
with multiple lines`
710

811

912

1013
// Const Declaration
11-
// TODO
14+
const MY_CONSTANT string = "Some string"
1215

1316

1417
// ------------------------------------
1518
// Direct Access (Array-Like)
1619
// ------------------------------------
17-
// TODO
20+
// Indexing a string returns a byte.
21+
firstByte := variableName[0]
22+
23+
// Use range or []rune for Unicode code points.
24+
firstRune := []rune(variableName)[0]
1825

1926

2027
// ------------------------------------
2128
// Size / Length
2229
// ------------------------------------
23-
// TODO
30+
byteLength := len(variableName)
31+
runeCount := utf8.RuneCountInString(variableName)
2432

2533

2634
// ------------------------------------
2735
// Trim
2836
// ------------------------------------
29-
// TODO
37+
trimmed := strings.TrimSpace(variableName)
38+
trimmed := strings.Trim(variableName, " ")
39+
trimmedStart := strings.TrimLeft(variableName, " ")
40+
trimmedEnd := strings.TrimRight(variableName, " ")
3041

3142

3243

3344
// ------------------------------------
3445
// Is Null Or Empty
3546
// ------------------------------------
36-
// TODO
47+
// Strings cannot be nil.
48+
isEmpty := variableName == ""
3749

3850
// ------------------------------------
3951
// Transform
4052
// ------------------------------------
41-
// TODO
53+
upper := strings.ToUpper(variableName)
54+
lower := strings.ToLower(variableName)
4255

4356

4457
// ------------------------------------
4558
// Compare
4659
// ------------------------------------
47-
// TODO
60+
isEqual := variableName == otherString
61+
result := strings.Compare(variableName, otherString)
4862

4963

5064
// ------------------------------------
5165
// Copy / Clone
5266
// ------------------------------------
53-
// TODO
67+
// Strings are immutable.
68+
copyString := variableName
5469

5570

5671
// ------------------------------------
5772
// Concatenation
5873
// ------------------------------------
59-
// TODO
74+
result := firstString + secondString
75+
result := strings.Join(values, ", ")
76+
result := fmt.Sprintf("%s%s", firstString, secondString)
6077

6178

6279
// ------------------------------------
6380
// String Interpolation
6481
// ------------------------------------
82+
result := fmt.Sprintf("Hello %s", name)
6583

6684

6785

6886
// ------------------------------------
6987
// Print / Output (Old Format)
7088
// ------------------------------------
89+
fmt.Println("Hello World")
90+
fmt.Printf("Printing Integer: %d\n", 10)
91+
fmt.Printf("Printing Any Number: %f\n", 20.5)
92+
fmt.Printf("More Printing %f, %f\n", 20.5, 50.2)
7193
```

0 commit comments

Comments
 (0)