我想将一个字符串分成 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}");