【问题标题】:replacing part of a string by position in c#在c#中按位置替换字符串的一部分
【发布时间】:2016-07-24 09:15:00
【问题描述】:

我有一个字符串:===FILE CONTENT==\r\n@something here... }\r\n\r\n@something here 2... }\t\r\n\r \n\r\n\r\n@something here 3... }\r@something here 4...} \n

使用 c#,我想获取此字符串中以“@”开头并以“}”结尾的所有字符串,但我在获取“@”和“}”的位置时遇到问题,因为换行符和制表符不是使固定。提前谢谢你

这里是示例输出:

new string 1 = "@something here... }";
 new string 2 = "@something here 2... }";
 new string 3="@something here 3... }";
 new string 4="@something here 4...}";

【问题讨论】:

  • 使用 IndexOf 和 LastIndexOf 然后使用子字符串

标签: c# string string-matching


【解决方案1】:

见下面的代码:

string[] getSubstrings(string str)
{
    return str.Split('@')
        .Select(s => "@" + s.Substring(0, 1 + s.IndexOf('}')))
        .ToArray();
}

【讨论】:

  • 您可能错过了 .Select 末尾的右括号。很好的答案。简洁。 +1
  • @NoSaidTheCompiler,谢谢,我太依赖 Visual Studio 来为我突出显示这些,在浏览器中输入时很难计算开括号:)
  • 我确实试过这个,它对我有用 谢谢你们,我真的很感激。我有另一个与此相关的担忧。首先,如何使用 ';@' 示例“;@something here 3...}”绕过字符串。我应该在返回 str.Split('@') 之前添加执行吗?第二。假设我有字符'}'或@在'@}'格式内,它应该被视为我的字符串的一部分而不是终止符。示例输出字符串:@BOOK_SERVIE ;DATE 01/2015\r\n{\r\n BOOK CONTENT ;第 1 页第 2 章;' C¢}>' \r\n 第 2 章 b8 , ;' @C¢}8'}
【解决方案2】:

您可以使用正则表达式:

var regex = new Regex(@"@[^}]*}");
var listOfMatches = new List<string>();
for (var match = regex.Match(inputString); match.Success; match = match.NextMatch())
{
    listOfMatches.Add(match.Value);
}

【讨论】:

    猜你喜欢
    • 2011-06-28
    • 2021-09-23
    • 1970-01-01
    • 2012-06-18
    • 2011-09-23
    • 1970-01-01
    • 2022-07-18
    • 2020-08-08
    相关资源
    最近更新 更多