文字列を解析して、[10.2%]
. 次に、"%"
シンボルを削除し、小数点を切り上げ/切り捨ての整数に変換する必要があります。だから、[10.2%]
結局なるでしょう10
。そして、[11.8%]
最終的には12になります。
うまくいけば、私は十分な情報を提供しました。
Math.Round(
double.Parse(
"[11.8%]".Split(new [] {"[", "]", "%"},
StringSplitOptions.RemoveEmptyEntries)[0]))
正規表現を使用してみませんか?
この例では、角かっこ内の値は常に小数点付きのdoubleであると想定しています。
string WithBrackets = "[11.8%]";
string AsDouble = Regex.Match(WithBrackets, "\d{1,9}\.\d{1,9}").value;
int Out = Math.Round(Convert.ToDouble(AsDouble.replace(".", ","));
正規表現(Regex)を使用して、1つの括弧内の必要な単語を検索します。必要なコードは次のとおりです。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)));
}
var s = "[10.2%]";
var numberString = s.Split(new char[] {'[',']','%'},StringSplitOptions.RemoveEmptyEntries).First();
var number = Math.Round(Covnert.ToDouble(numberString));
角かっこの間の内容が <decimal>% の形式であることを確認できる場合、この小さな関数は角かっこの最初のセットの間の値を返します。抽出する必要がある値が複数ある場合は、多少変更する必要があります。
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を指定します。