[英]How to parse, actually get number from string in c#?
我試圖只獲得數字的一部分。 例如,輸入可能只是數字,如 50,或字符串,如:50 或更多。 數字也總是排在第一位。 我總是想從中得到唯一的數字。 我試過這樣,但這不起作用:
double presureTendency;
var presureTendencyToString= Convert.ToString(presureTendency.ToString());
var presureTendencySplited = presureTendencyToString.Split(' ');
var pressureTendencyNumber = presureTendencySplited[0];
您可以使用正則表達式從字符串中提取數字。 請參閱下面的示例。 需要注意的一件事是您的語言環境設置,因為它們會影響雙精度的格式。
string pattern = @"^\d+\.\d+";
string input = "50.1 , or more";
Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
if (m.Success) {
double nr = Double.Parse(m.Value);
Console.WriteLine(nr);
}
因此,如果我輸入“507.89foo123,456bah”,您只需要 507 還是需要 507.89? –
請閱讀,我寫的是 50,而不是 50 昏迷或小數。 我只想在你的例子中使用 507
那么,這很容易:
string input = "50.1 , or more";
char[] digits = input.TakeWhile(Char.IsDigit).ToArray();
if(digits.Any())
{
string result = new string(digits); // "50"
// if you want an integer:
int number = int.Parse(result);
}
如果只想要字符串開頭的數字,您可以通過簡單地解析初始值並忽略 rest 來做到這一點,因為從您的評論來看,您沒有小數分隔符,它更簡單:
var myString = Console.ReadLine().Trim(' '); // read console input
// trim spaces
var numericString = new List<char>();
foreach (var c in myString)
{
if (char.IsDigit(c))
{
numericString.Add(c); // if is digit parse
}
else
{
break; // the first non digit breaks the cycle
}
}
// parse the value as int
if (int.TryParse(numericString.ToArray(), out var myVal))
{
Console.WriteLine(myVal);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.