确定字符串后删除字符串

时间:2012-09-03 12:48:31

标签: c# .net

我需要在一段文本中的另一个字符串后删除某些字符串。 我有一个带有一些URL的文本文件,在URL之后有一个操作的结果。我需要删除操作的结果,只留下URL。

文字示例:


http://website1.com/something                                        Result: OK(registering only mode is on) 

http://website2.com/something                                    Result: Problems registered 100% (SOMETHING ELSE) Other Strings; 

http://website3.com/something                               Result: error: "Âíèìàíèå, îáíàðóæåíà îøèáêà - Ìåñòî æèòåëüñòâà ñîäåðæèò íåäîïóñòèìûå ê 

我需要从结果开始删除所有字符串,以便剩下的字符串必须是:

http://website1.com/something

http://website2.com/something

http://website3.com/something

没有结果:........

结果是随机生成的,因此在结果

之后,我不确切知道结果是什么

8 个答案:

答案 0 :(得分:12)

一种选择是根据其他答案使用正则表达式。另一个是IndexOf,后跟Substring

int resultIndex = text.IndexOf("Result:");
if (resultIndex != -1)
{
    text = text.Substring(0, resultIndex);
}

就我个人而言,我倾向于发现,如果我能够通过几个非常简单易懂的字符串操作来逃避,我发现比使用正则表达式更容易。一旦你开始进入真正的模式(至少有3个,然后是其中之一),那么正则表达式会变得更有用。

答案 1 :(得分:1)

您可以尝试使用此代码 - 使用string.Replace

var pattern = "Result:";
var lineContainYourValue = "jdfhkjsdfhsdf Result:ljksdfljh"; //I want replace test
lineContainYourValue.Replace(pattern,"");

答案 2 :(得分:1)

string input = "Action2 Result: Problems registered 100% (SOMETHING ELSE) Other Strings; ";
string pattern = "^(Action[0-9]*) (.*)$";
string replacement = "$1";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

您使用$1来保持匹配ActionXX。

答案 3 :(得分:1)

使用正则表达式。

示例:

var r = new System.Text.RegularExpressions.Regex("Result:(.)*");
var result = r.Replace("Action Result:1231231", "");

然后你会在结果中有“行动”。

答案 4 :(得分:0)

Linq方法:

IEnumerable<String> result = System.IO.File
    .ReadLines(path)
    .Where(l => l.StartsWith("Action") && l.Contains("Result"))
    .Select(l => l.Substring(0, l.IndexOf("Result")));

答案 5 :(得分:0)

这可能是什么?

string line;
using ( var reader = new StreamReader ( File.Open ( @"C:\temp\test.txt", FileMode.Open ) ) )
   using ( var sw = new StreamWriter(File.Open( @"C:\Temp\test.edited.txt", FileMode.CreateNew ) ))
       while ( (line = reader.ReadLine()) != null )
          if(!line.StartsWith("Result:")) sw.WriteLine(line); 

答案 6 :(得分:0)

您可以使用RegEx进行此类处理。

using System.Text.RegularExpressions;

private string ParseString(string originalString)
{
    string pattern = ".*(?=Result:.*)";
    Match match = Regex.Match(originalString, pattern);
    return match.Value;
}

答案 7 :(得分:0)

根据您当前的示例,您只需要网站,正则表达式匹配空格。

var fileLine = "http://example.com/sub/     random text";
Regex regexPattern = new Regex("(.*?)\\s");
var websiteMatch = regexPattern.Match(fileLine).Groups[1].ToString();
Debug.Print("!" + websiteMatch + "!");

重复文本文件中的每一行。正则表达式解释说:。*匹配任何东西,?使得匹配不合适,(括号)将匹配放入一个组中,\\ s匹配空格。