15

このような文字列をフォーマットしたい

BPT4SH9R0XJ6

このようなものに

BPT4-SH9R-0XJ6

文字列は常に12文字と数字の組み合わせになります

どんなアドバイスでも大歓迎です、ありがとう

4

11 に答える 11

31

試すRegex.Replace(input, @"(\w{4})(\w{4})(\w{4})", @"$1-$2-$3");

正規表現はしばしば嘲笑されますが、必要なことを行うにはかなりきちんとした方法です。文字列メソッドを使用して満たすのが難しい、より複雑な要件に拡張できます。

于 2012-04-23T18:41:09.760 に答える
6

"(.{4})(.{4})(.{4})"あなたはあなたの表現"$1-$2-$3"としてそしてあなたの代わりとして使うことができます。ただし、これは正規表現の適切な使用法ではありません。を使用すると、はるかに簡単に実行できますSubstring

var res = s.Substring(0,4)+"-"+s.Substring(4,4)+"-"+s.Substring(8);
于 2012-04-23T18:38:56.520 に答える
4

ルールが常に4文字の3つのブロックに分割される場合は、regexpは必要ありません。

str.Substring(0,4) + "-" + str.Substring(4,4) + "-" + str.Substring(8,4)
于 2012-04-23T18:40:50.270 に答える
3

との組み合わせでString.Concatstring.Substring必要なものすべてを処理する必要があるように思われます。

于 2012-04-23T18:39:12.523 に答える
2
  var str = "BPT4SH9R0XJ6";
  var newStr = str.Substring(0, 4) + "-" + str.Substring(4, 4) + "-" + str.Substring(8, 4);
于 2012-04-23T18:42:01.610 に答える
1

正規表現を実行したい理由はありますか?ハイフンを挿入するだけです。

string s = "BPT4SH9R0XJ6";
for(int i = 4; i < s.length; i = i+5)
    s = s.Insert(i, "-");

これにより、4文字ごとにハイフンが追加され続け、文字列が短すぎたり長すぎたりしてもエラーが発生しません。

于 2012-04-23T18:42:46.410 に答える
1
return original_string.SubString(0,4)+"-"+original_string.SubString(4,4)+"-"+original_string.SubString(8,4);
于 2012-04-23T18:42:59.840 に答える
1
string str = @"BPT4SH9R0XJ6";
string formattedString = string.Format("{0}-{1}-{2}", str.Substring(0, 4), str.Substring(4,4), str.Substring(8,4));
于 2012-04-23T18:45:05.340 に答える
1

これは、任意の長さの文字列で機能します。

            for (int i = 0; i < (int)Math.Floor((myString.Length - 1) / 4d); i++)
            {
                myString = myString.Insert((i + 1) * 4 + i, "-");
            }
于 2013-02-28T12:49:11.803 に答える
0

これを使用して終了しました

var original = "BPT4SH9R0XJ6".ToCharArray();

var first = new string(original, 0, 4);
var second = new string(original, 4, 4);
var third = new string(original, 8, 4);
var mystring = string.Concat(first, "-", second, "-", third);

ありがとう

于 2012-04-23T18:44:27.597 に答える
0

操作しているテキストが 12 文字のコードであることが保証されている場合は、なぜ部分文字列を使用しないのでしょうか? なぜ正規表現が必要なのですか?

String theString = "AB12CD34EF56";
String theNewString = theString.Substring(0, 4) + "-" + theString.Substring(4, 4) + "-" + theString.Substring(8, 4);'
于 2012-04-23T18:58:05.213 に答える