使用下面的表达式,我能够获得预期的输出并提取数字或字符串并拆分为字符串数组。
Regex _re = new Regex(@"(?<=\D)(?=\d)|(?<=\d)(?=\D)", RegexOptions.Compiled);
_re.Split("2323dfdf233fgfgfg ddfdf334").Dump(); //string can be any alphanumeric start with
不使用Regex如何实现相同的目的?我需要解析每个字符并分开吗?我有很多文本需要处理以提取出来,但是我不能使用正则表达式作为输入。
答案 0 :(得分:2)
对于Linq解决方案,可以在检查Enumerable.Skip()
以确定字符是否为数字的同时结合使用Enumerable.TakeWhile()
和char.IsDigit()
。例如:
string inputString = "2323dfdf233fgfgfg ddfdf334";
var list = new List<string>();
int usedLength = 0;
while (usedLength < inputString.Length)
{
bool isDigit = char.IsDigit(inputString[usedLength]);
string item = string.Concat(inputString.Skip(usedLength).
TakeWhile((c) => char.IsDigit(c) == isDigit));
usedLength += item.Length;
list.Add(item);
};
然后,您可以轻松地遍历列表:
foreach (string item in list)
Console.WriteLine(item);
输出:
2323
dfdf
233
fgfgfg ddfdf
334
答案 1 :(得分:1)
此解决方案足够快。检查较大的字符串。
Auth::guard('api')->login($user)