从2个字符之间的字符串中删除字符

时间:2014-12-04 13:28:34

标签: c# string character

输入字符串(3)示例:

+31 +31 31 888 00 98
+236+2323902341122
+41   +41416185825

想要输出:

+31 31 888 00 98
+2323902341122
+41416185825

我如何删除第一个+和第二个+之间的字符。没有Regex还有办法吗?无论如何,Regex也会没问题。

我试过了:

int indexUP = myString.IndexOf('[');
int indexClose = myString.IndexOf(']', indexUP + 1);


string results = myString.Substring(0, indexUP ) + myString.Substring(indexClose + 1);

但这仅适用于两个不同的角色。我的分隔符是'+'。

5 个答案:

答案 0 :(得分:1)

这应该可以解决您的问题。您需要在第一次出现后找到+符号的索引。

string str = "+31 +31 31 888 00 98";
int index = str.IndexOf('+', str.IndexOf('+')+1);
if(index>0)
    str = str.Substring(index);

答案 1 :(得分:1)

这是另外一个。解决方案通用的任何可能的预编号' +'符号。

 string myString = "+236+2323902341122";
 List<char> list= myString.ToList();
 int index = list.FindLastIndex(x=> x=='+');
 string resultString = myString.Substring(index);

答案 2 :(得分:1)

感谢@petelids谁指出,我的初始试用代码有效 - 只需稍加改动:

int indexUP = myString.IndexOf('+');
int indexClose = myString.IndexOf('+', indexUP + 1);
string results = myString.Substring(0, indexUP ) + myString.Substring(indexClose).Trim();

答案 3 :(得分:1)

使用正则表达式:

var x = new Regex(@"([\+]{1}.*)([\+]{1}.*)").Match(s).Groups[2];

其中s - 输入字符串。

答案 4 :(得分:1)

在Regex对象上使用Replace方法:

Regex myRegex = new Regex(  
  @"\+[\d\s]*\+",  
  RegexOptions.IgnoreCase | RegexOptions.Multiline  
);  
string example =  
  @"+31 +31 31 888 00 98  
  +236+2323902341122  
  +41   +41416185825";

return myRegex.Replace(example, "+");

这将用一个加号替换所有包含数字和空格的符号,应该是你想要的。

输出如下:

  

+31 31 888 00 98
  2323902341122个
  41416185825