簡體   English   中英

如何解析,實際上從 c# 中的字符串中獲取數字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM