如何仅在最后一次出现特殊字符时拆分字符串,并在拆分后使用两边

时间:2015-04-28 14:37:05

标签: c# regex wpf string split

我想在最后一次出现特殊字符时拆分字符串。

我尝试从浏览器解析选项卡的名称,所以我的初始字符串看起来像这样:

  

无标题 - 谷歌浏览器

由于存在Split功能,因此很容易解决。这是我的实施:

var pageparts= Regex.Split(inputWindow.ToString(), " - ");
InsertWindowName(pageparts[0].ToString(), pageparts[1].ToString());//method to save string into separate columns in DB

这样可行,但是当我得到这样的页面时会出现问题:

  

SQL注入 - 维基百科,免费的百科全书 - Mozilla Firefox

这里有两个破折号,这意味着,在分割完成后,数组中有3个单独的字符串,如果我将继续正常,数据库将包含第一列值" SQL注入"并在第二列价值"维基百科,免费的百科全书"。最后一个值将完全省略。

我想要的是数据库中的第一列将具有值: SQL注入 - 维基百科,免费的百科全书"第二栏将有: " Mozilla Firefox"。这有可能吗?

我尝试使用Split(" - ")。Last()函数(甚至也是LastOrDefault()),但后来我只得到了最后一个字符串。我需要得到原始字符串的两面。刚刚用最后一个破折号分开。

3 个答案:

答案 0 :(得分:8)

您可以将String.SubstringString.LastIndexOf

一起使用
string str = "SQL injection - Wikipedia, the free encyclopedia - Mozilla Firefox";
int lastIndex = str.LastIndexOf('-');
if (lastIndex + 1 < str.Length)
{
    string firstPart = str.Substring(0, lastIndex);
    string secondPart = str.Substring(lastIndex + 1);
}

创建扩展方法(或简单方法)以执行该操作,并为lastIndex添加一些错误检查。

编辑:

如果您要拆分" - " (空格),请使用以下内容计算lastIndex

string str = "FirstPart - Mozzila Firefox-somethingWithoutSpace";
string delimiter = " - ";
int lastIndex = str.LastIndexOf(delimiter);
if (lastIndex + delimiter.Length < str.Length)
{
    string firstPart = str.Substring(0, lastIndex);
    string secondPart = str.Substring(lastIndex + delimiter.Length);
}

因此对于字符串:

"FirstPart - Mozzila Firefox-somethingWithoutSpace"

输出将是:

FirstPart 
Mozzila Firefox-somethingWithoutSpace

答案 1 :(得分:0)

如果您不关心重新组合字符串,可以使用以下内容:

var pageparts= Regex.Split(inputWindow.ToString(), " - ");
var firstPart = string.Join(" - ", pageparts.Take(pageparts.Length - 1));
var secondPart = pageparts.Last()

InsertWindowName(firstPart, secondPart);

答案 2 :(得分:0)

请原谅我的懒惰这个解决方案我确信有更好的方法,但我会给你一个解决方案建议我假设你正在编写C#。 首先纠正我,如果我错误地回答了这个问题,无论你想要什么,只要列返回第一个(所有文本甚至包括破折号但是最后一个)和最后一列(所有文本在最后一个破折号之后)如果没问题。我们开始做吧。 //我只在我希望所有数据都在单独的变量(数组位置)中时才使用split函数我假设你只想要2个值(如果可能的话),所以你可以使用substring。

sum

如果它不是你想要的,你可以解释我的例子“SQL注入 - 维基百科, - 免费 - 百科全书 - Mozilla Firefox”什么假设要归还? 请原谅我今天无聊的代码。