の倍数を3#のC#で置き換えることはできますか?たとえば、文字列が"000100000"
で、"000"
を"+"
に置き換えたいとしますが、すべてという3文字のグループに置き換えてください。追加条件:グループを末尾から始まるから変更する必要があります。: "000100000"
の場合は"+100+"
を出力します。Cの#3の倍数のみを置換する#
答えて
私は正規表現、例えば:
string source = "000100000";
// "+100+"
string result = Regex.Replace(
source,
"0{3,}",
match => new string('0', match.Length % 3) + new string('+', match.Length/3));
テスト使用することをお勧め:
001 -> 001
0001 -> +1
000100 -> +100
0001000 -> +1+
00010000 -> +10+
000100000 -> +100+
0001000000 -> +1++
交換する前に文字列を逆にして、問題が解決した後。あなたがサブストリングでこれを行うことができ
string ReplaceThreeZeros(string text)
{
var reversed = new string(text.Reverse().ToArray());
var replaced = reversed.Replace("000","+");
return new string(replaced.Reverse().ToArray());
}
テキストがどのように反転するのか分かりません。また、問題は3つの「0」のグループについてではなく、一般に3つのグループについてです。 – Abion47
::のような
何か
forループstring strReplace = "000100000";
//Store your string on StringBuilder to edit the string
StringBuilder sb = new StringBuilder();
sb.Append("+");
sb.Append(strReplace.Substring(0, 3)); //Use substring, 0 is the start of index and 3 is the length as your requirement
sb.Append("+");
sb.Append(strReplace.Substring(3, 3));
sb.Append("+");
sb.Append(strReplace.Substring(6, 3));
sb.Append("+");
strReplace = sb.ToString(); //Finally replace your string instance with your result
等により今回の代わりに、部分文字列を使用して、私たちはあなたのすべての文字を取得するためにchar配列を使用文字列:
string strReplace = "000100000";
char[] chReplace = strReplace.ToCharArray();
StringBuilder sb = new StringBuilder();
for (int x = 0; x <= 8; x++)
{
if (x == 0 || x == 3 || x == 6 || x == 9)
{
sb.Append("+");
sb.Append(chReplace[x]);
}
else
{
sb.Append(chReplace[x]);
}
}
sb.Append("+");
strReplace = sb.ToString();
Eh、 '(x == 0 || x == 3 || x == 6 || x == 9)' '* susecious *、どうして' ... && x == 12 || x == 15 || ... || x == 3003 || ...?あなたは、おそらく 'x%3 == 0 'を意味します。 –
私が&&を使用すると、xの条件がすべて満たされた場合にのみトリガされます。 –
これには正規表現を使用できます。
(0{3}(?!0+))
これは、3つの0のグループの後に他のゼロがないことを確認するために、負の先読みを使用しています - 0の任意の数のシーケンスのために、他の言葉で、それだけで最後と一致します3.
これを変更することで、先見の明と見えることを微妙に異なるものにすることができます。
オーケーを、これらの答えの束が3 '0'
秒の検出グループに取り組んでいます。ここでは3 anythings(3つの文字のグループ内の文字列を読み込む)のグループを扱うの答えです:
string GroupsOfThree(string str)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i + 2 < str.Length; i += 3)
{
string sub = str.Substring(i, 3);
if (sub.All(c => c == sub[0]))
sb.Append("+");
else
sb.Append(sub);
}
return sb.ToString();
}
あなたは置き換える正規表現を使用することができます。
"[0]{3}|[1]{3}"
上記の正規表現は、C#で以下のように使用することができます:
string k = "000100000";
Regex pattern = new Regex("[0]{3}|[1]{3}");
pattern.Replace(k, "+");
- 1. フォーマットC#倍数から3の倍数の倍数のScientfic表記
- 2. 重回帰のエラー:置換するアイテムの数が置換の長さの倍数ではありません
- 3. Rのループ警告:置換するアイテムの数が置換の長さの倍数ではありません
- 4. Rのエラー:置換するアイテムの数が置換の長さの倍数ではありません
- 5. R snaive() - 置き換えるアイテムの数が置換の長さの倍数ではありません
- 6. "置き換えるアイテムの数が置換の長さの倍数ではありません"
- 7. 置き換えられるアイテムのRエラー数が置換の長さの倍数ではありません
- 8. 置換するアイテムのR個の配列の配列が置換の長さの倍数でない
- 9. C++ 2倍の倍数を生成する
- 10. arraylistから3の偶数と3の倍数を表示する方法
- 11. C++バイナリファイルからの倍数の書き込みと読み込み
- 12. 文字の置換とCの置換
- 13. ビューの置換時にCocoaウィンドウのサイズが2倍になる
- 14. 最低の共通倍数がCで倍精度になる
- 15. 倍数の内容を再読み込みするDataTable's
- 16. 3つのRGB intsを1つの0-1の倍精度に変換する
- 17. urlの英数字のみを置換するjava regex
- 18. 単語全体のPythonを置換する(変数のみ)
- 19. C#Regex番号のついたサブグループのみを置換するが置換する
- 20. C++引数置換の規則
- 21. 初心者 - 3と5の倍数を加算する
- 22. アルファベットの文字位置をCの数字に変換する
- 23. Cコードのヘルプ、ループ、倍数の合計
- 24. C言語での倍数の使用
- 25. Coutの17倍の倍数
- 26. 置き換えられるアイテムの数は置換の長さの倍数ではありません " - ループのゾーン関数
- 27. 3変数の方程式をC++で倍精度浮動小数点数型に分割する
- 28. C++ベクトル内の要素の倍数を追加する
- 29. C#文字列の数字を置換する
- 30. 一部の値のみを置換するコレクションを変換
サブストリングがそれをグーグル、あなたが探しているもので、最初に何かをしてみてください。 – Universus
これは非常に単純なアルゴリズム問題です。プログラマーになりたいと思っていて、いくつかのC#の基礎を知っている人は誰でも自分自身でこれを理解できるはずです。このような簡単な質問だけを解決するための専門知識を育てることを恐れないでください。 –
あなたの質問に関してもう少し詳細を追加してください - 入力は任意の文字列ですか?上の例では、アルゴリズムが000100000を+ 1 + 00に変更しないのはなぜですか? (000)1(000)00は3つのグループです。また、スタックオーバーフローは、人々があなたのために答えを書いてくれるサイトではありません。あなたがすでに試みたこと、またはあなたが持っている具体的な問題を示してください。 – PartlyCloudy