从字符串中删除子串

时间:2017-03-24 10:30:30

标签: c# string substring

我有一个字符串:

string valueA = "Free Chips (Save $43 / month)";

现在我想检索(Save之前发生的字符串,即我想要Free Chips。我怎样才能做到这一点?

string valueB = valueA.Replace(); 

4 个答案:

答案 0 :(得分:1)

使用SubstringIndexOf

string valueB = valueA.Substring(0, valueA.IndexOf("(Save", StringComparison.Ordinal))
                      .Trim();

答案 1 :(得分:1)

您可以将正则表达式正向前瞻一起使用:

.*?(?=\s*\(Save)

完整代码:

using System.Text.RegularExpressions;

string query = "Free Chips (Save $43 / month)";

// ...

Regex r = new Regex(@".*?(?=\s*\(Save)");

Match m = r.Match(query);
if(m.Success) {
    string result = m.ToString(); // result = "Free Chips"
}
如果m.Success不是字符串的一部分,则

false"(Save"

答案 2 :(得分:0)

其中一种方法是正则表达式(当然对于这样一个简单的字符串,它可能有点开销):

var regex = new Regex("(.*)\(Save");
// (.*) - match anything and group it
// \(Save - match "(Save" literally
var regexMatch = regex.Match(valueA);
if (regexMatch.Success)
{
    var valueB = regex.Match(valueA).Groups[1].Value;
    //and so on
}

答案 3 :(得分:0)

string valueA = "Free Chips (Save $43 / month)";
string valueB = valueA.Substring(0, valueA.IndexOf(" (Save"));