c#分句

时间:2011-02-24 10:58:00

标签: c# string

是否可以将这些组合词分成两部分? 例如:“名字”来 “第一” “名称”

我有一堆属性,例如FirstName,LastName等,我需要在我的页面上显示这个。这就是为什么我需要将此属性名称分隔为更合适的方式。

4 个答案:

答案 0 :(得分:1)

编辑: OP指定他需要拆分属性名称

如果您遵循属性的CamelCase命名约定(即“FirstName”而不是“Firstname”),则可以非常容易地按大写字符拆分单词。

string[] SplitByCaps(string input)
{
    StringBuilder output = new StringBuilder();
    for (int i = 0; i < input.Length; i++)
    {
        char c = input[i];
        if (i > 0 && Char.IsUpper(c))
            output.Append(' ');

        output.Append(c);
    }
    return output.ToString().Split(' ');         
}

Orinal回答:

我想说,对于实用目的,任何字符串都不可能这样做。

当然可以编写一个程序来执行此操作,但无论您的实际需求是什么,该程序都会过度。可能还有已经执行此操作的库,但它们会非常繁重,您不希望依赖它们。

任何可以实现这一目标的程序都必须知道英语中的所有单词(我们甚至不考虑多语言解决方案)。您还需要一个智能的词法解析器,因为对于任何单词,可能有多种可能的方法来拆分它。

我建议您研究一些其他方法来解决您的特定问题。

答案 1 :(得分:1)

你的目标很模糊 如果属性总是有大写字母,你可以在单词中找到所有大写字母的位置,并将其分配给那些位置。
如果无法保证大写字母,最好的方法是创建转换表。该表将定义初始属性名称和结果文本对。通过这种方式,您将拥有简单的转化地图

答案 2 :(得分:0)

除非你有一个所有'单个'单词的字典,否则我能想到的唯一解决方案是拆分大写字母:

FirstName - &gt;名字

UIFilter仍然存在问题 - &gt; UI过滤器。

答案 3 :(得分:0)

您可以使用 substring 从字符串中获取前5个字符。然后 replace 原始字符串中的前五个字符为空白。

string str = "Firstname";
string firstPart = str.Substring(0,5); // "First"
string secondPart = str.replace(firstPart,""); // "name"

如果你想让任何单词被分割成通用的,那么你需要有一些明确的标准,你可以将这些单词分成几部分。如果没有明确的标准,就不可能按照您的意愿分割字符串。