Как преобразовать десятичное число в целое в предложении символа в C#? - PullRequest
0 голосов
/ 04 марта 2020

Пример: *

string str = "i have rs 12.55"

, и я хочу напечатать это как

"i have rs 12"

, а игнорируя .55 в предложении ,

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Чтобы удалить все дробные части, вы можете попробовать регулярные выражения :

using System.Text.RegularExpressions;

... 

Regex regex = new Regex(@"(?<=[0-9]+)\.[0-9]+");

string result = regex.Replace(str, "");

Демо:

  string[] tests = new string[] {
    "i have rs 12.55",
    "I have rs 12.55 and -8.63 but 0.78963",
    "list : A.B.C.D",
    "12 - 45... but 78.99"
  };

  Regex regex = new Regex(@"(?<=[0-9]+)\.[0-9]+");

  string report = string.Join(Environment.NewLine, tests
    .Select(test => $"{test,-40} => {regex.Replace(test, "")}")) ;

  Console.Write(report);

Результат:

i have rs 12.55                          => i have rs 12
I have rs 12.55 and -8.63 but 0.78963    => I have rs 12 and -8 but 0
list : A.B.C.D                           => list : A.B.C.D
12 - 45... but 78.99                     => 12 - 45... but 78
0 голосов
/ 04 марта 2020

Вы можете попробовать использовать строковую функцию Substring и захватывать строку до .

string str = "i have rs 12.55";
var result = str.Substring(0, str.IndexOf('.'));

Однако я предлагаю удалить десятичную часть из 12.55 перед формированием строки.

double value = 12.55;
string str = $"i have rs {(int)value}";

ИЛИ

decimal value = 12.55M;
string str = $"i have rs {decimal.Truncate(value)}";
...