5

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

文本示例:

http://website1.com/something 结果:OK(仅注册模式开启)

http://website2.com/something 结果:问题已登记 100%(其他)其他字符串;

http://website3.com/something 结果:错误:“Âíèìàíèå, îáíàðóæåíà îøèáêà - Ìåñòî æèòåëüñòâà ñîäåðæèò íåäîóñòèìûå ê

我需要删除从Result:开始的所有字符串,所以剩余的字符串必须是:

http://website1.com/something

http://website2.com/something

http://website3.com/something

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

结果是随机生成的,所以我不知道RESULT 之后的确切内容:

4

8 回答 8

12

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

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

就我个人而言,我倾向于发现,如果我只使用几个非常简单且易于理解的字符串操作就可以逃脱,我发现这比使用正则表达式更容易。一旦你开始进入真正的模式(至少其中 3 个,然后是其中之一),那么正则表达式当然会变得更加有用。

于 2012-09-03T12:57:02.833 回答
1

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

var pattern = "Result:";
var lineContainYourValue = "jdfhkjsdfhsdf Result:ljksdfljh"; //I want replace test
lineContainYourValue.Replace(pattern,"");
于 2012-09-03T12:52:48.777 回答
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);

你用$1ActionXX来保持匹配。

于 2012-09-03T12:54:21.530 回答
1

为此使用正则表达式。

例子:

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

然后您将在结果中显示“Action”。

于 2012-09-03T12:57:08.087 回答
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")));
于 2012-09-03T12:57:13.077 回答
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); 
于 2012-09-03T12:58:21.683 回答
0

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

using System.Text.RegularExpressions;

private string ParseString(string originalString)
{
    string pattern = ".*(?=Result:.*)";
    Match match = Regex.Match(originalString, pattern);
    return match.Value;
}
于 2012-09-03T12:59:58.077 回答
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 匹配空格。

于 2012-09-03T13:52:54.880 回答