私はSplit()
メソッドを使用して文字列を分割してきました。ただし、これは、string.Split()
で条件に文字を設定すると機能します。 Uppercase
が表示されているときに文字列を分割する方法はありますか?
次のような分離されていない文字列からいくつかの単語を取得することは可能ですか?
DeleteSensorFromTemplate
結果の文字列は次のようになります。
Delete Sensor From Template
使用する Regex.split
string[] split = Regex.Split(str, @"(?<!^)(?=[A-Z])");
RegExが気に入らず、不足しているスペースを挿入したいだけの場合は、これでも機能します。
public static string InsertSpaceBeforeUpperCase(this string str)
{
var sb = new StringBuilder();
char previousChar = char.MinValue; // Unicode '\0'
foreach (char c in str)
{
if (char.IsUpper(c))
{
// If not the first character and previous character is not a space, insert a space before uppercase
if (sb.Length != 0 && previousChar != ' ')
{
sb.Append(' ');
}
}
sb.Append(c);
previousChar = c;
}
return sb.ToString();
}
正規表現の別の方法:
public static string SplitCamelCase(string input)
{
return System.Text.RegularExpressions.Regex.Replace(input, "([A-Z])", " $1", System.Text.RegularExpressions.RegexOptions.Compiled).Trim();
}