解析字符串并只返回括号符号之间的信息.c# Winforms
本文关键字:之间 符号 信息 Winforms 字符 字符串 串并 返回 | 更新日期: 2023-09-27 17:50:47
我想解析一个字符串,只返回括号符号之间的值,例如[10.2%]
。然后我需要剥离"%"
符号并将小数转换为四舍五入的上下整数。所以[10.2%]
最终会变成10
。并且,[11.8%]
最终将是12。
希望我提供了足够的信息。
Math.Round(
double.Parse(
"[11.8%]".Split(new [] {"[", "]", "%"},
StringSplitOptions.RemoveEmptyEntries)[0]))
为什么不使用正则表达式?
在本例中,我假设括号内的值始终是带小数的双精度浮点数。
string WithBrackets = "[11.8%]";
string AsDouble = Regex.Match(WithBrackets, "'d{1,9}'.'d{1,9}").value;
int Out = Math.Round(Convert.ToDouble(AsDouble.replace(".", ","));
var s = "[10.2%]";
var numberString = s.Split(new char[] {'[',']','%'},StringSplitOptions.RemoveEmptyEntries).First();
var number = Math.Round(Covnert.ToDouble(numberString));
如果您能确保括号之间的内容是
public decimal getProp(string str)
{
int obIndex = str.IndexOf("["); // get the index of the open bracket
int cbIndex = str.IndexOf("]"); // get the index of the close bracket
decimal d = decimal.Parse(str.Substring(obIndex + 1, cbIndex - obIndex - 2)); // this extracts the numerical part and converts it to a decimal (assumes a % before the ])
return Math.Round(d); // return the number rounded to the nearest integer
}
例如getProp("I like cookies [66.7%]")
给Decimal
编号67
使用正则表达式(Regex)在一个括号内查找所需的单词。这是你需要的代码:使用foreach循环删除%并将其转换为int。
List<int> myValues = new List<int>();
foreach(string s in Regex.Match(MYTEXT, @"'[(?<tag>[^']]*)']")){
s = s.TrimEnd('%');
myValues.Add(Math.Round(Convert.ToDouble(s)));
}