根据大写字母的出现分割单词

问题描述 投票:0回答:2

从我是消费者的外部API接收字符串类型的类别。

从值中我们得到它们具有通用的格式,如

  • NewWest(以大写字母开头的单词,凡是要中断的单词,均以大写字母继续)。>>
  • ABC(单词全为大写)
  • 到目前为止,我们正在将这一类别作为输入,并将它们分成多个空格使用此方法

public static string BreakCategoryIntoMultipleWords(string category)
        {
            StringBuilder builder = new StringBuilder();
            string formatedWord = string.Empty;

        if (category.All(c => char.IsUpper(c)))
        {
            formatedWord = category;
        }
        else
        {
            foreach (char c in category)
            {
                if (Char.IsUpper(c) && builder.Length > 0) builder.Append(' ');
                builder.Append(c);
            }
            formatedWord = builder.ToString();
        }
        return formatedWord;
    }

当前方法将为以下输入返回此值

  • ABC(输入)> ABC(输出)
  • NewWest(输入)> New West(输出)
  • NewBellCan(输入)> New Bell Can
  • 已经注意到第三种格式

  • ABCXyxxx
  • XCVbbbb
  • RRDddddddvvvvv

  • 所需的输出是:

  • ABCXyxxx(输入)> ABC Xyxxx(由于大写字母X后所有字母都是小字母,表示单词已损坏)]]

  • XCVbbbb(输入)> XC Vbbb(由于大写字母V后所有字母均很小,表示单词已损坏)
  • RRDddddddvvvv(输入)> RR Dddddddvvvv(由于大写字母D之后所有字母都是小字母,表示单词已损坏)
  • 我应该如何在现有方法中实现这一点,以便所有三种格式都能正常工作。

从我是消费者的外部API接收字符串类型的类别。从这些值中我们可以得到它们的通用格式,例如NewWest(以大写字母开头的单词...

c# linq
2个回答
1
投票

RegEx方法:https://dotnetfiddle.net/42gyod

string result = new Regex("(?=[A-Z][a-z])").Replace(input, " ").TrimStart();

0
投票

添加到@fubo答案中,您也可以使用Split并避免使用TrimStart

© www.soinside.com 2019 - 2024. All rights reserved.