我需要在一段文本中的另一个字符串后删除某些字符串。 我有一个带有一些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
没有结果:........
结果是随机生成的,因此在结果
之后,我不确切知道结果是什么答案 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匹配空格。