如何在删除子字符串后获取剩余的字符串

5

假设我有以下字符串:

string temp = "some string contains text which contains demo";
string result = RemainingString(temp, 12, 8); // string, startIndex, length

我需要的结果字符串应该如下所示:
some string text which contains demo

请注意,仅仅从第一个位置删除单词contains

更新:我个人想要使用正则表达式明确地实现这一点。

5个回答

7

尝试使用String.Remove方法,它可以完全满足您的需求。


5

String.Remove(Int32, Int32)可以完成这项工作:

string temp = "some string contains text which contains demo";
string result = temp.Remove(12,8);

4
使用 string.Remove
public string RemainingString(string orig, int startIndex, int length)
{
    return orig.Remove(startIndex, length);
}

或者 - 将两个子字符串连接起来 - 到索引处,以及索引+长度后面的部分 (.NET 1.0/1.1):

public string RemainingString(string orig, int startIndex, int length)
{
    return orig.Substring(0, startIndex) + 
           orig.Substring(startIndex + length);
}

2
这里提供一个使用正则表达式的解决方案:
public string RemainingString(string str, int start, int length)
{
    return Regex.Replace(str, "^(.{" + start+ "})(?:.{" + length + "})(.*)$", "$1$2");
}

@AbhishekGupta 一位非常聪明的人曾经说过:“我有一个问题。我用正则表达式解决了它。现在我有两个问题。” - 只有在适当的情况下才使用正则表达式。我建议您使用string.Remove方法更适合您的目的。EPLKleijntjens 考虑不同的解决方案总是很好的,对此给予+1!(更新-刚刚看到OPs评论使用正则表达式,好答案!) - Rich O'Kelly
我实际上正在使用WPF创建一个实用程序,用于创建正则表达式的存储库,以执行此类基本任务。 - Abhi

-1
   $line_string = 'this is all the sting from which i would want to treat';

    $key_string ='from which';

    //use strpos

    $position2 = strpos($line_string,$key);

   if($position2){

      $found = substr($line_string,$position2,strlen($key_string));

      //echo $found;

    }

    //the substr now begins at character position $position2

    //and ends at position2 + strlen($key_string);

     //so
     $remainderpos = position2 + strlen($key_string);


     $str_remaining = substr($line_string,$remainderpos);

     echo $str_remaining;

尽可能简单。从头开始编写代码。


这看起来像是 PHP 代码,你知道 C# 中的操作码吗? - Vlastimil Burián

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接