我想解析一個字符串,只返回括號內的值,如[10.2%]
。然後我需要去掉"%"
符號並將小數轉換爲向上/向下的整數。所以,[10.2%]
將最終爲10
。並且,[11.8%]
最終會成爲12.解析字符串並僅返回括號符號之間的信息。 C#Winforms
希望我已經提供了足夠的信息。
我想解析一個字符串,只返回括號內的值,如[10.2%]
。然後我需要去掉"%"
符號並將小數轉換爲向上/向下的整數。所以,[10.2%]
將最終爲10
。並且,[11.8%]
最終會成爲12.解析字符串並僅返回括號符號之間的信息。 C#Winforms
希望我已經提供了足夠的信息。
爲什麼不使用正則表達式?
在這個例子中,我假設你的括號內的值總是一個帶小數的雙精度值。
string WithBrackets = "[11.8%]";
string AsDouble = Regex.Match(WithBrackets, "\d{1,9}\.\d{1,9}").value;
int Out = Math.Round(Convert.ToDouble(AsDouble.replace(".", ","));
正則表達式時'string.Split'會做什麼? – Oded
@dotTutorials,我將如何忽略包含其他信息的括號,例如[info]? –
使用正則表達式(正則表達式)在一個括號內查找所需的單詞。 這是您需要的代碼: 使用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)));
}
Math.Round(
double.Parse(
"[11.8%]".Split(new [] {"[", "]", "%"},
StringSplitOptions.RemoveEmptyEntries)[0]))
我怎麼會需要修改這個解析字符串,不管括號內的百分比是多少? –
@MattMcHone - 我不關注。例子是?什麼是不同種類的'%'? – Oded
範圍是從[0.1%]到[100%]之間的任何地方。 –
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
當然,足夠的資料,有人做這個_for_你,但我們不經營這種方式。請張貼您當前的代碼,顯示使用[您嘗試過的](http://whathaveyoutried.com)並解釋什麼不工作以及您卡在哪裏。 – Oded