8

code-behindで C# の文字列から囲み括弧を削除する必要があります。

たとえば、文字列が の場合、[My [] Groups]それを に変換したいとしMy [] Groupsます。

4

8 に答える 8

20

これを試して:

yourString = yourString.Replace("[", string.Empty).Replace("]", string.Empty);

質問が編集されたため、回答が更新されました:

string s = "[My [] Groups]";
string pattern = @"^(\[){1}(.*?)(\]){1}$";
Console.WriteLine(Regex.Replace(s, pattern, "$2")); // will print My [] Groups
于 2012-10-11T14:07:00.250 に答える
18

例の文字列を使用してこれに対処する最も簡単な方法は、部分文字列を取得することです。

if (s.Length > 2) {
    s = s.Substring(1, s.Length-2);
}

これは、最初と最後の文字が実際に角かっこであることが 100% 確実な場合にのみ機能します。そうでない場合、たとえば、文字列がトリミングされていない場合は、追加の文字列操作 (文字列のトリミングなど) を実行する必要がある場合があります。

于 2012-10-11T14:07:10.533 に答える
12

使いやすいTrim

var result = "[My [] Groups]".Trim('[', ']');
于 2012-10-11T17:41:57.557 に答える
8

String.Replaceメソッドを確認する

http://msdn.microsoft.com/en-us/library/fk49wtc1.asp

アップデート:

囲み括弧のみを削除する場合は、最初と最後の文字を取り除くことができます。dasblinkenlight によって提案されたコードまたは正規表現によって。

最初にそれらが実際に括弧であることを確認してください。

正規表現を使用すると、これらすべてを一度に行うことができます。それ以外の場合は、dasblinkenlight のソリューションにこのようなものを追加する必要があります。

if (s.Length > 2) {
  if(s.StartsWith("[")) {
    s = s.Substring(1, s.Length-1);
  }
  if(s.EndsWith("]")) {
    s = s.Substring(0, s.Length-1);
  }
}

または、開始ブラケットと終了ブラケットの両方がある場合にのみ削除したい場合

if (s.Length > 2) {
  if(s.StartsWith("[") && s.EndsWith("]")) {
    s = s.Substring(1, s.Length-2);
  }
}

長さが 2 より大きいかどうかのチェックはおそらく削除できますが、最初のコードのソースが dasblinkenlight によって記述されたものであることを示すために残しました。

于 2012-10-11T14:06:43.700 に答える
2

試すstring.Replace

http://msdn.microsoft.com/en-us/library/system.string.replace.aspx

于 2012-10-11T14:07:13.343 に答える
2

次のステートメントは、すべての文字 [ および ] を削除します。

Regex.Replace("This [is [a] [test.", @"[\[\]]", "")   // -> "This is a test."
于 2012-10-11T14:07:41.043 に答える
2

交換ソリューションは、内部ブラケットと外部ブラケットを取り除きます。私はあなたが欲しいと思います:

string result = "[My [] Groups]".TrimLeft('[').TrimRight(']');
于 2012-10-11T17:38:43.427 に答える
1
var myString = "[My Groups]";
myString.Replace("[", string.Empty);
myString.Replace("]", string.Empty);
于 2012-10-11T14:06:49.877 に答える