Make first letter of a string upper case (with maximum performance)
Solution in different C# versions
C# 8 with at least .NET Core 3.0 or .NET Standard 2.1
public static class StringExtensions
{
public static string FirstCharToUpper(this string input) =>
input switch
{
null => throw new ArgumentNullException(nameof(input)),
"" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
_ => string.Concat(input[0].ToString().ToUpper(), input.AsSpan(1))
};
}
Since .NET Core 3.0 / .NET Standard 2.1 String.Concat()
supports ReadonlySpan<char>
which saves one allocation if we use .AsSpan(1)
instead of .Substring(1)
.
C# 8
public static class StringExtensions
{
public static string FirstCharToUpper(this string input) =>
input switch
{
null => throw new ArgumentNullException(nameof(input)),
"" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
_ => input[0].ToString().ToUpper() + input.Substring(1)
};
}
C# 7
public static class StringExtensions
{
public static string FirstCharToUpper(this string input)
{
switch (input)
{
case null: throw new ArgumentNullException(nameof(input));
case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input));
default: return input[0].ToString().ToUpper() + input.Substring(1);
}
}
}
Really old answers
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + String.Join("", input.Skip(1));
}
This version is shorter. For a faster solution, take a look at Diego's answer.
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + input.Substring(1);
}
Probably the fastest solution is Darren's (There's even a benchmark) although I would change it's string.IsNullOrEmpty(s)
validation to throw an exception since the original requirement expects for a first letter to exist so it can be uppercased. Note that this code works for a generic string and not particularly on valid values from the Textbox
.
Make first letter of a string upper case (with maximum performance)
Solution in different C# versions
C# 8 with at least .NET Core 3.0 or .NET Standard 2.1
public static class StringExtensions
{
public static string FirstCharToUpper(this string input) =>
input switch
{
null => throw new ArgumentNullException(nameof(input)),
"" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
_ => string.Concat(input[0].ToString().ToUpper(), input.AsSpan(1))
};
}
Since .NET Core 3.0 / .NET Standard 2.1 String.Concat()
supports ReadonlySpan<char>
which saves one allocation if we use .AsSpan(1)
instead of .Substring(1)
.
C# 8
public static class StringExtensions
{
public static string FirstCharToUpper(this string input) =>
input switch
{
null => throw new ArgumentNullException(nameof(input)),
"" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
_ => input[0].ToString().ToUpper() + input.Substring(1)
};
}
C# 7
public static class StringExtensions
{
public static string FirstCharToUpper(this string input)
{
switch (input)
{
case null: throw new ArgumentNullException(nameof(input));
case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input));
default: return input[0].ToString().ToUpper() + input.Substring(1);
}
}
}
Really old answers
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + String.Join("", input.Skip(1));
}
This version is shorter. For a faster solution, take a look at Diego's answer.
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + input.Substring(1);
}
Probably the fastest solution is Darren's (There's even a benchmark) although I would change it's string.IsNullOrEmpty(s)
validation to throw an exception since the original requirement expects for a first letter to exist so it can be uppercased. Note that this code works for a generic string and not particularly on valid values from the Textbox
.
Capitalizing the first letter of a string only
What about using ToUpper
on the first char and ToLower
on the remaining string?
string after = char.ToUpper(before.First()) + before.Substring(1).ToLower();
Regex first letter of each word Upper Case separated by spaces and 3 to 29 character long...C#
One of options is this:
^(?!.{21})[A-Z][a-z]{2,}(\s[A-Z][a-z]{2,})*$
Demo: https://dotnetfiddle.net/oWjSI4
program to perform in sentence each first letter of the word should be in Upper case using c#?
You program will not work for if the list contains "abca", the output will be "AbcA".
use instead this:
char.ToUpper(x[0]) + x.Substring(1);
I let you manage the case when x is empty or has only one character
First letter capital in string c#
You need to assign the result (and use the correct method name)
label1.Text = FirstLetterToUpper("test text");
Related Topics
How to Run Commands by Sudo and Enter Password by Ssh .Net C#
How to Assign a Base Class Object to a Derived Class Reference with an Explicit Typecast
Get the Generated SQL Statement from a SQLcommand Object
How to Use Moq to Mock an Extension Method
Change Wpf Controls from a Non-Main Thread Using Dispatcher.Invoke
Can Anonymous Class Implement Interface
How to Split a String by a Multi-Character Delimiter in C#
How to Concatenate Two Arrays in C#
Best Practices for Exception Management in Java or C#
How to Set an SQL Server Connection String
Remove Weird Characters ( a with Hat) from SQL Server Varchar Column
Xml Serialization of Interface Property
Uwp Enable Local Network Loopback
How to Convert a String to Its Equivalent Linq Expression Tree
Notification When a File Changes
How to Abort a Task Like Aborting a Thread (Thread.Abort Method)