我有方法GetOption(5)
返回值5K23
我需要獲取字符串的最後兩個字符事情是值是字符串值,所以我需要使用Substring
我曾嘗試這樣做:幫助檢查字符串中的數字值是否爲奇數C#
if(Convert.ToInt32(GetOption(5).Substring(GetOption(5).Length-2, 2) % 2 == 1))
我似乎無法得到它的權利,任何人都可以幫助我。
感謝
我有方法GetOption(5)
返回值5K23
我需要獲取字符串的最後兩個字符事情是值是字符串值,所以我需要使用Substring
我曾嘗試這樣做:幫助檢查字符串中的數字值是否爲奇數C#
if(Convert.ToInt32(GetOption(5).Substring(GetOption(5).Length-2, 2) % 2 == 1))
我似乎無法得到它的權利,任何人都可以幫助我。
感謝
你並不真正需要的最後兩位數字,以確定號碼是否是奇數
var option = GetOption(5);
var isOdd = int.Parse(option[option.Length - 1].ToString()) % 2 == 1;
's /你真的不/你根本不// –
它似乎並不適用於我,如果我這樣做if( isOdd)它拋出一個錯誤。輸入字符串的格式不正確 –
@Sandeep在這種情況發生時,你確定''option'包含''5K23''嗎? –
var t = "5K23";
var regex = new Regex(@"\d{2}$");
var match = regex.Match(t);
if (match.Success)
{
var extracted = match.Value;
// Do more stuff
}
現在他有兩個問題! – mletterle
我發現這裏的正則表達式比子字符串方法更可讀,更直觀 - 儘管我只是使用['Regex.Match'](http://msdn.microsoft.com/zh-cn/library/0z2heewz .aspx)在這裏。這Perlesque半報價在這裏不是非常合理,IMOHO ;-) – 2011-06-24 18:06:37
我喜歡@Lukáš' answer(+1),但原因你的代碼沒有按」 t工作是...
Convert.ToInt32
(
GetOption(5).Substring
(
GetOption(5).Length-2, 2
) % 2 == 1
)
不正確的paren分組。你正在通過<long thing> % 2 == 1
到Convert.ToInt32()
。
儘量保持行簡短易讀。
var s = GetOption(5);
if(Convert.ToInt32(s.Substring(s.Length-2, 2)) % 2 == 1)
{
// do stuff
}
在OP中傳遞給SubString的索引很好。你想從len-2開始2個字符。開始len-2和複製len字符是不正確的,並會拋出一個ArgumentOutOfRangeException。 – mletterle
你說得對,我認爲帶有2個int參數的'Substring()'在C#中的工作方式與Java中的相同(我是一個Java人員)。顯然這是不正確的!據此編輯。謝謝。 –
int x;
string option = GetOption(5);
if (Int32.TryParse(option.Substring(option.Length - 2), out x) && x % 2 == 1)
豈不是更好地使用正則表達式來檢查呢?就像'^。* [0-9] [13579] $' – khachik
@khachik我不知道「更好」,但我喜歡它。也可以只用'[13579] $'來「與標題對齊」。 – 2011-06-24 18:04:24
@pst,這裏的「更好」意味着「更快」並且減輕GC的負擔。 – khachik