这是我的句子:
嗨123,它是564和678,所以让我们开始吧。
我需要用数字和单词来切成薄片:
[0] -> "Hi "
[1] -> "123"
[2] -> " it is a "
[3] -> "564"
[4] -> " and "
[5] -> "678"
[6] -> ", so let's work."
我试图用空格char
分割它,并在数组的每个块中是否有数字时加入。但这不是一个好主意,并且要合并和拆分的代码太多。
即使使用Linq,还有什么简单的方法吗?
答案 0 :(得分:1)
您可以使用正则表达式进行分割。
这是您需要的正则表达式:
(?<=\D)(?=\d)|(?<=\d)(?=\D)
它基本上是查找数字-非数字边界或非数字-数字边界。
using System.Text.RegularExpressions; // don't forget this using directive!
Regex.Split("Hi 123 it is a 564 and 678, so let's work.", @"(?<=\D)(?=\d)|(?<=\d)(?=\D)");
答案 1 :(得分:1)
尝试以下代码,它使用带有模式"IN"
的正则表达式,这意味着一个或多个数字,然后按字符串将其拆分,以匹配该模式:
\d+
答案 2 :(得分:1)
您可以在下面使用代码。
String full = "Hi 123 it is a 564 and 678, so let's work.";
List<string> list = new List<string>();
string buffer = "";
bool number_seq = false;
int number;
for (int i = 0; i < full.Length; i++)
{
String single_char = full.Substring(i, 1);
bool isNumber = int.TryParse(single_char, out number);
if (isNumber)
{
if (!number_seq)
{
list.Add(buffer);
buffer = "";
number_seq = true;
}
}else if (number_seq)
{
list.Add(buffer);
buffer = "";
number_seq = false;
}
buffer += single_char;
}
list.Add(buffer);