2016-12-06 8 views
0

私は命名規則のないひどいDB構造を持ち、テーブルとフィールドの名前はどこにでもあります。このデータの一部を新しく開発されたモバイルアプリに提示する必要があります。テーブルやフィールド名に関してモバイルアプリに少なくとも「クリーン」なデザインを提示したいと思います。文字列をJavascriptで保護されたフレンドリーな変数名に変換する

この目的のために、モバイルアプリが消費する「いい」jsonオブジェクトを作成するコードを記述しています。私は手動で行って、私のdbの各フィールドに "正しい"名前をつけたくないので、私はこれを行う自動化されたプロセスを望みます。

私が適用しようとしているルールは次のとおりです。すべてのテーブル名とフィールド名はlowerCamelCaseにある必要があります。

Apple_Cart => appleCart 
AppleCart => appleCart 
Apple__Cart => appleCart 
appleCart => appleCart 
APPLE_CART => appleCart 
Apple_Cart => appleCart 
APPLECart => appleCart (not sure about this one) 

私はここで車輪の再発明したくない、と私はNewtonsoft.Jsonまたは別のライブラリのいずれかが既にこれを行うには、コードを持っていることを確信していますか?誰かが私にフィールドとテーブル名の文字列をjson標準形式に変換する良い方法を教えてください。

これは、私はあなたが私もそれを使用し、それは素晴らしい仕事、lowerCamelCaseを取得するには、この機能を使用することができます

/// <summary> 
    /// Makes the json identifier. 
    /// </summary> 
    /// <param name="fieldName">Name of the field.</param> 
    /// <returns></returns> 
    private string MakeJsonIdentifier(string fieldName) 
    { 
     StringBuilder sb = new StringBuilder(fieldName); 
     while (sb.ToString().Contains("_")) 
     { 
      int posOfFirstUs = sb.ToString().IndexOf("_", StringComparison.Ordinal); 
      if (sb.ToString().Length > posOfFirstUs + 1) 
      { 
       sb[posOfFirstUs + 1] = char.ToUpperInvariant(sb.ToString()[posOfFirstUs + 1]); 
       sb.Remove(posOfFirstUs, 1); 
      } 
     } 
     return sb.ToString(); 
    } 

答えて

1

..私は車輪の再発明しようとしてることを決定する前に得た方法遠いです。

function camelize(str) { 
    return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(letter, index) { 
    return index == 0 ? letter.toLowerCase() : letter.toUpperCase(); 
    }).replace(/\s+/g, ''); 
} 

Source code C# あなたがこの方法を使用することができますが、あなたは、セパレータを設定する必要があります。私の場合、私はいつもどのセパレータを使用したか知っています。例えば、私がsnake caseを使用している場合、私は区切り記号が "_"であり、ToCamelCase(str,"_");と呼ぶことを知っています。また、私はあなたの文字列の組み合わせの不明な数を持っている場合は、どのようなセパレータが設定されているか知ることは困難になると思います。

public string ToCamelCase(string str,string sep) 
    { 
     str = str.Split(new[] {sep}, StringSplitOptions.RemoveEmptyEntries) 
      .Select(s => char.ToUpperInvariant(s[0]) + s.Substring(1, s.Length - 1)) 
      .Aggregate(string.Empty, (s1, s2) => s1 + s2); 
     return str.First().ToString().ToLowerInvariant() + str.Substring(1); 
    } 
+0

はこちらですか?私はC#土地でこれを行うために探しているので – user230910

関連する問題