こんにちは、これは私の最初の質問です。これらの2つの方法をより効率的にする方法
私はいくつかのユーティリティメソッドを構築しながらLambda/LINQで遊んでいます。
第1の方法は、のような
"AdnanRazaBhatti"
を文字列を取り、同じようにそれを壊す、
"Adnan Raza Bhatti"
第二の方法は、第一の方法のような文字列を取得しても取り、
out String[] brokenResults
と返品最初のメソッドのような壊れた文字列と、次のようにbrokenResults配列を埋めます。
"Adnan" "Raza" "Bhatti"
質問:
A.あなたは、これらの方法は、より効率的にする方法を提案してくださいことはできますか?
B.私はStringBuilderを使用しようとすると、Where、Select、StringBuilderクラスにSelectが存在しないなどの拡張メソッドを教えてくれます。なぜそうですか?インデクサーはStringBuilderでStringBuilder s = new StrinBuilder( "Dang")のような文字を取得しますが、 char c = s [0];ここでcharはDです。
コード
方法1:
public static string SplitCapital(string source)
{
string result = "";
int i = 0;
//Separate all the Capital Letter
var charUpper = source.Where(x => char.IsUpper(x)).ToArray<char>();
//If there is only one Capital letter then it is already atomic.
if (charUpper.Count() > 1) {
var strLower = source.Split(charUpper);
foreach (string s in strLower)
if (i < strLower.Count() - 1 && !String.IsNullOrEmpty(s))
result += charUpper.ElementAt(i++) + s + " ";
return result;
}
return source;
}
方法2:
public static string SplitCapital(string source, out string[] brokenResults)
{
string result = "";
int i = 0;
var strUpper = source.Where(x => char.IsUpper(x)).ToArray<char>();
if (strUpper.Count() > 1) {
var strLower = source.Split(strUpper);
brokenResults = (
from s in strLower
where i < strLower.Count() - 1 && !String.IsNullOrEmpty(s)
select result = strUpper.ElementAt(i++) + s + " ").ToArray();
result = "";
foreach (string s in brokenResults)
result += s;
return result;
}
else { brokenResults = new string[] { source }; }
return source;
}
注:
私はテーブルのカラム名を分割するには、これらのユーティリティメソッドを使用することを計画しています私は自分のデータベースから取得します。
たとえば、列名が "BooksId"の場合、これらのメソッドの1つをプログラムで「ブックスID」として使用して分割します。他の方法やデザインウィンドウや[データセット]のような列名の変更があります。 [tableName] .HeadersRow.Cells [0] .Text = "Books Id"でも、今後このメソッドを使用する予定です。
ありがとうございます。
これは、コードレビュースタック交換に適している可能性があります。 – cdeszaq