在使用正则表达式执行拆分后丢失字符串中的字符



我想将一个字符串分成 2 个字符串,

我的字符串看起来像:哈曼*3 空格*409991

我想有两个字符串,第一个带有"HAMAN",第二个应该包含"409991"

问题:实现此代码后,我的第二个字符串具有"09991"而不是"409991"

        string str = "HAMAN   409991     ";
        string[] result = Regex.Split(str, @"s4");
        foreach (var item in result)
        {
            MessageBox.Show(item.ToString());
        }

当前有问题的解决方案:

当我找到空格后跟数字 4 时,拆分我的原始字符串。第二个字符串中缺少字符"4"。

首选解决方案:

当我找到 3 个空格后跟数字 4 时拆分。并在我的第二个字符串中提到"4"。

试试这个

string[] result = Regex.Split(str, @"s{3,}(?=4)");

这是演示

积极的展望是你的朋友:

Regex.Split(str, @"s+(?=4)");
或者

你不能使用正则表达式:

var str = "HAMAN   409991     ";
var result = str.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);


如果您需要它以SPACESPACESPACE4开头,则可以选择:

var str = new[] { 
    "HAMAN   409991     ",
    "HAMAN  409991",
    "HAMAN   509991"
};
foreach (var s in str)
{
    var result = s.Trim()
                  .Split(new[] {"   "}, StringSplitOptions.RemoveEmptyEntries)
                  .Select(a => a.Trim())
                  .ToList();
    if (result.Count != 2 || !result[1].StartsWith("4"))
        continue;
    Console.WriteLine("{0}, {1}", result[0], result[1]);
}
那是

因为你要拆分包括 4。如果要按三个连续空格拆分,则应准确指定:

string[] result = Regex.Split(str, @"s{3}");

相关内容

  • 没有找到相关文章

最新更新