简体   繁体   中英

Losing characters in strings after performing a split with RegEx

I want to split a string into 2 strings,

my string looks like: HAMAN* 3 whitespaces *409991

I want to have two strings the first with 'HAMAN' and the second should contain '409991'

PROBLEM: My second string has '09991' instead of '409991' after implementing this code:

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

CURRENT SOLUTION with PROBLEM:

Split my original string when I find whitespace followed by the number 4. The character '4' is missing in the second string.

PREFERED SOLUTION:

To split when I find 3 whitespaces followed by the digit 4. And have '4' mentioned in my second string.

Try this

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

Here is the Demo

积极向前看是您的朋友:

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

Or you could not use Regex:

var str = "HAMAN   409991     ";

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

EXAMPLE


Alternative if you need it to start with 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}");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM