在小写和大写之间添加间距?

001*_*001 6 c# string

我希望在字符串中包含大写字符或下划线时添加空格.

我该怎么做呢?

例1

输入

ThisIsAnInputString
Run Code Online (Sandbox Code Playgroud)

输出(结果)

This Is An Input String
Run Code Online (Sandbox Code Playgroud)

例2

输入

This_Is_An_Input_String
Run Code Online (Sandbox Code Playgroud)

输出(结果)

This Is An Input String
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 12

您可以使用与小写字符匹配的正则表达式,后跟大写字符,并在以下之间使用可选的下划线:

string output = Regex.Replace(input, "([a-z])_?([A-Z])", "$1 $2");
Run Code Online (Sandbox Code Playgroud)

您可能还想使用它来处理单个字符单词:

string output = Regex.Replace(input, "(?<!^)_?([A-Z])", " $1");
Run Code Online (Sandbox Code Playgroud)

  • +1,我可能会将`[az]`更改为`[a-zA-Z]`来处理像`ThisIsATest`这样的字符串. (2认同)

spa*_*967 6

下划线:

string inputString = "This_Is_An_Input_String";
string resultString = inputString.Replace('_', ' ');
Run Code Online (Sandbox Code Playgroud)

首都:

string inputString = "ThisIsAnInputString";
//this will put a space before all capitals that are preceded by a lowercase character
string resultString = Regex.Replace(inputString, @"([a-z])([A-Z])", "$1 $2");
Run Code Online (Sandbox Code Playgroud)


PaR*_*RaJ 0

对于输入类型:ThisIsAnInputString

        string input1 = "ThisIsAnInputString";
        StringBuilder builder = new StringBuilder();

        foreach (char c in input1)
        {
            if (Char.IsUpper(c))
            {
                builder.Append(' ');
                builder.Append(c);
            }
            else
            {
                builder.Append(c);
            }
        }

        string output = builder.ToString().Trim();
Run Code Online (Sandbox Code Playgroud)

对于输入类型:This_Is_An_Input_String

string input2 = "This_Is_An_Input_String";
string output = Regex.Replace(input2, "_([A-Z])", " $1");
Run Code Online (Sandbox Code Playgroud)