Metode ekstensi untuk mendapatkan semua angka positif yang terkandung dalam string:
public static List<long> Numbers(this string str)
{
var nums = new List<long>();
var start = -1;
for (int i = 0; i < str.Length; i++)
{
if (start < 0 && Char.IsDigit(str[i]))
{
start = i;
}
else if (start >= 0 && !Char.IsDigit(str[i]))
{
nums.Add(long.Parse(str.Substring(start, i - start)));
start = -1;
}
}
if (start >= 0)
nums.Add(long.Parse(str.Substring(start, str.Length - start)));
return nums;
}
Jika Anda ingin angka negatif juga cukup modifikasi kode ini untuk menangani tanda minus ( -
)
Diberikan masukan ini:
"I was born in 1989, 27 years ago from now (2016)"
Daftar nomor yang dihasilkan adalah:
[1989, 27, 2016]