目前我正面临一个问题。我有一个字符串列表:
我只想要"Marken>"
之后的值。但是,有些行没有"Marken>"
,而且位置也不总是相同。
编辑:这是我的代码
// Hersteller Fix
string hersteller = "";
string input = tokens[22];
string pattern = @"((.*Marken\>)|(.*?))(?'target'.+)";
RegexOptions options = RegexOptions.Singleline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
hersteller = m.Index;
hersteller = m.Groups["target"];
}
这是输出:
{Waldhausen,Pferde>Sattelzubehör}
但是我只需要“ Waldhausen”,“ Wintec” ...
您有什么想法吗?
答案 0 :(得分:0)
您可以使用正则表达式:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"((.*Marken\>)|(.*?))(?'target'.+)";
string input = @"Pferde>Bandagen und Gamaschen>Glocken und Fesselschutz,Marken>Waldhausen,Pferde>Bandagen und Gamaschen
Pferde>Sattelzubehör>Zubehör,Marken>Waldhausen,Pferde>Sattelzubehör
Pferde>Sättel,Marken>Wintec
Marken>Wintec
Reiter>Reithelme und Sicherheit>Reflexartikel,Pferde>Bandagen und Gamaschen>Glocken und Fesselschutz,Marken>Waldhausen,Reiter>Reithelme und Sicherheit,Pferde>Bandagen und Gamaschen
Pferde>Trensen und Zubehör";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Groups["target"].Value.Trim(), m.Index);
}
}
}
答案 1 :(得分:0)
foreach (var inputLine in inputList)
{
if (inputLine.Contains(target))
{
// Get everything in the line after the location of the target word
// (indexOf(target) + target.Length ensures we start at the end of the target word, rather than the beginning
var result = inputLine.Substring(inputLine.IndexOf(target) + target.Length);
var indexOfSeparator = result.IndexOf('>');
if (indexOfSeparator != -1)
{
// Grab everything from the start of the string to the location of the separator
result = result.Substring(0, indexOfSeparator);
}
Console.WriteLine(result);
}
}
答案 2 :(得分:0)
这是不使用正则表达式的一种方法,但实际上您应该先尝试一下,然后再在此处提问
var input = "Marken>Wintec";
string mark = "Marken>";
string output = null;
var start = input.IndexOf(mark);
if (start >= 0)
{
var end = input.IndexOf(",", start);
if (end >= 0)
{
output = input.Substring(start + mark.Length, end - start - mark.Length);
}
else
{
output = input.Substring(start + mark.Length);
}
}
答案 3 :(得分:0)
如果适合您,请尝试以下逻辑
20
答案 4 :(得分:0)
String str = "Reiter>Reithelme und Sicherheit>Reflexartikel,Pferde>Bandagen und Gamaschen>Glocken und Fesselschutz,Marken>Waldhausen,Reiter>Reithelme und Sicherheit,Pferde>Bandagen und Gamaschen";
List<String> Splitted = str.Split( ',' ).ToList();
foreach ( String Split in Splitted )
{
if ( Split.Contains("Marken"))
{
String value = Split.Split( '>' )[1];
Console.WriteLine( value );
break;
}
}
结果:Waldhausen