文字列は1文字で、長さは140文字に制限されています。 通常、私は自分のコードで140以上を取得します。 文字列は、次の形式で値が設定されます。Mxxxx xは任意の数値で、厳密な長さはありません。だから、私はM1を持っていても、私はM281を持つことができます。特殊文字を含む文字列の先頭140文字を取得
文字列が140文字より長い場合、最初は140文字を取りたいと思いますが、最後の文字列が半分になってしまった場合は、文字列に入れたくないのです。
まだ、私はいくつかのローカル変数に後半を保存する必要があります。
たとえば、これは文字列
"M5903, M6169, M6753, M619, M6169, M6753, M6919, M6169, M6753, M919, M6169, M6753, M6919, M6169, M6753, M6919, M6169, M6753, M919, M6169, M6753, M6919, M669, M6753, M6919, M69, M6753, M6919, M6169, M63, M6919, M6169, M6753, M6919, M619, M653, M6919, M66, M6753, M19, M6169, M6753, M6919, M6169, M6753, M6919, M6169, M6753, M6919, M6169, M6753, M619"
であり、これは最初の140個の文字であると言うことができます言うことができます:
"M5903, M6169, M6753, M619, M6169, M6753, M6919, M6169, M6753, M919, M6169, M6753, M6919, M6169, M6753, M6919, M6169, M6753, M919, M6169, M6753, M6919, M669, M6753, M6919, M69, M6753, M6919, M6169, M63, M69"
最後の値がM6919
だったが、それはM69
と19
に分割されました。
最も効率的な言い方は次のとおりです。140より長い場合は分割するが、新しい文字列の最後の値を2つに分けた場合は、文字列の最初の部分から削除し、残りの文字列値に置きます。元の文字列。
おそらくこれを達成する方法はたくさんあります。私はifまたはswitch/caseループを使用して、最初の文字が 'M'でない場合、値が分割されていることを知るよりも、最初の文字列から削除する必要があります。このような
private static string CreateSettlmentStringsForUnstructuredField(string settlementsString)
{
string returnSettlementsString = settlementsString.Replace(", ", " ");
if (returnSettlementsString.Length > 140)
{
returnSettlementsString.Substring(0, 140);
/*if returnSettlementsString was spitted in two in a way
that last value was broken in two parts, take that value
out of returnSettlementStrings and put it in some new
string value with the other half of the string.*/
}
return returnSettlementsString;
}
なぜ文字列のリストを使用しないのですか? –
@DmitriyKovalenkoよく私はそれのような文字列を取得します。私は確かに文字列のリストに変換することができますが、それから私はそれを再び刺し傷に変換しなければなりません、そして、私は長さなどのすべてのチェックを行う機能を行う必要があります。より複雑。 –
最後のものを除いて各 'Mx'の直後にカンマがありますか? – dotctor