1

共有三种字符串:

  • 字符串(1)_2013-02-15
  • 另一个字符串(2)_2013-02-15
  • yetAnotherString(3)_2013-02-15

直到左括号,每个字符串都是常数。括号之间的数字会改变,所有三个字符串的长度可以是一个、两个或三个字符。日期将是当天的日期。

我想删除括号和它们之间的数字。期望的结果如下:

  • string_2013-02-15
  • 另一个String_2013-02-15
  • yetAnotherString_2013-02-15

任何帮助,将不胜感激。

4

7 回答 7

2
string MyString = "string(1)_2013-02-15";
int firstParenIndex = MyString.IndexOf("(");
int secondParenIndex = MyString.IndexOf(")");
string String1 = MyString.Substring(0,firstParenIndex);
string String2 = MyString.Substring(seconParenIndex+1);
string finalString = String1 + String2;
于 2013-02-15T22:27:59.310 回答
2

使用简单的String方法:

int leftBrace =  str1.IndexOf('(');
int rightBrace = str1.IndexOf(')', leftBrace);
str1 = str1.Remove(leftBrace, rightBrace - leftBrace + 1);

演示

于 2013-02-15T22:29:21.627 回答
2
var input = "string(1)_2013-02-15";
var result = Regex.Replace(input, "\\([0-9]+\\)", string.Empty);
于 2013-02-15T22:29:43.903 回答
1

您可以使用 string.split('(') 并以这种方式删除,例如,如果您知道只有一组括号:

public string RemoveBrackets(string Message)
{
    string temp1 = Message.Split('(')[0];
    string temp2 = Message.Split(')')[1];
    string newMessage = temp1 + temp2;
    return newMessage;
}

反正就是这样的:)

于 2013-02-15T22:27:33.140 回答
0

试试这个:

int index1 = test2.IndexOf('(');
int index2 = test2.LastIndexOf(')', index1 + 1);
string result2 = test2.Remove(index1, index2 - index1);
于 2013-02-15T22:28:09.973 回答
0

考虑到 9999 年之前的日期部分的恒定长度已经足够远,您可以通过减少一次调用来优化代码(找到第二个括号的位置如下:

string s = "something(123)_2013-02-16";
string result = s.Substring(0, s.IndexOf("(")) + s.Substring((s.Length - 11), 11);
于 2013-02-15T22:52:56.233 回答
0

即使字符串的第一部分包含和/或,使用Substring()and方法也有效。LastIndexOf()( )

string s = "string(1)_2013-02-15";
s = s.Substring(0, s.LastIndexOf('(')) + s.Substring(s.LastIndexOf(')')+1);
于 2013-02-15T23:04:29.280 回答