14

文字列を受け取り、それを「パスカルケース」にする関数が必要です。新しい単語が始まることを示す唯一の指標はアンダースコアです。クリーンアップする必要のある文字列の例を次に示します。

  1. price_old=>PriceOldである必要があります
  2. rank_old=>はRankOldである必要があります

私は最初の文字を大文字にする関数に取り組み始めました:

public string FirstCharacterUpper(string value)
{
 if (value == null || value.Length == 0)
  return string.Empty;
 if (value.Length == 1)
  return value.ToUpper();
 var firstChar = value.Substring(0, 1).ToUpper();
 return firstChar + value.Substring(1, value.Length - 1);
}

上記の関数が実行しないのは、アンダースコアを削除し、アンダースコアの右側にある文字を「ToUpper」することです。

また、インジケーター(アンダースコアなど)のない文字列をキャメルケースに入れる方法についてのアイデア。例えば:

  1. companysource
  2. 財務トレンド
  3. 会計変更タイプ

ここでの主な課題は、ある単語がどこで終わり、別の単語がどこから始まるかを判断することです。新しい単語がどこから始まるかを判断するには、ある種のルックアップ辞書が必要だと思いますか?この種のことを行うための図書館はすでにありますか?

ありがとう、

ポール

4

6 に答える 6

23

TextInfo.ToTitleCaseメソッドを使用してから、「_」文字を削除できます。

だから、私が持っている拡張メソッドを使用して:

http://theburningmonk.com/2010/08/dotnet-tips-string-totitlecase-extension-methods

あなたはこれのような何かをすることができます:

var s = "price_old";
s.ToTitleCase().Replace("_", string.Empty);
于 2010-08-02T09:53:05.377 に答える
11

さて、最初のことは簡単です:

string.Join("", "price_old".Split(new [] { '_' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Substring(0, 1).ToUpper() + s.Substring(1)).ToArray());

戻り値PriceOld

2番目のことははるかに難しいです。companysource可能性があるCompanySourceか、多分、自動化するCompanysOurceことができますが、かなり欠陥があります。英語の辞書が必要になり、単語の組み合わせが正しいかどうかを推測します(まあ、私はたくさんのことを意味します)。

于 2010-08-02T09:52:09.513 に答える
4

これを試して:

public static string GetPascalCase(string name)
{
    return Regex.Replace(name, @"^\w|_\w", 
        (match) => match.Value.Replace("_", "").ToUpper());
}

Console.WriteLine(GetPascalCase("price_old")); // => Should be PriceOld
Console.WriteLine(GetPascalCase("rank_old" )); // => Should be RankOld
于 2010-08-02T09:56:36.007 に答える
2

アンダースコア付き:

s = Regex.Replace(s, @"(?:^|_)([a-z])",
      m => m.Groups[1].Value.ToUpper());

アンダースコアなし:

あなたはそこで独りです。しかし、先に進んで検索してください。これまで誰もこれをやったことがなかったら、私は驚くでしょう。

于 2010-08-02T10:37:06.537 に答える
0

連結された単語を分割する 2 番目の問題については、私たちの親友である Google & Co を利用できます。連結された入力が通常の英単語で構成されている場合、検索エンジンは代替検索クエリとして単一の単語のヒット率が高くなります。

サンプル入力を入力すると、Google と Bing は次のことを提案します。

original             | Google                | Bing
=====================================================================
companysource        | company source        | company source 
financialtrend       | financial trend       | financial trend
accountingchangetype | accounting changetype | accounting change type

この例を参照してください。

そのための小さなスクリーン スクレーパーを作成するのは、かなり簡単なはずです。

于 2010-08-02T10:56:34.567 に答える