2016-06-20 60 views
1

我有一個字符串,它是這樣的:僅提取包含子串字母

string str = hello_16_0_2016; 

我想是從字符串中提取打招呼。正如在我的程序中,字符串部分可以在任何地方發生,因爲它是自動生成的,所以我無法修復我的字符串的位置。

例如:我可以從上面的第一個五個字符串,並將其存儲在一個新的變量。

但是,由於字母的發生是隨機的,我只想從上面的字符串中提取字母,所以有人可以引導我到正確的程序來做到這一點?

+0

ERM,'str.Split( 「_」)第一(S => s.All(炭。 IsLetter));' – Jodrell

回答

1

只要使用簡單的正則表達式只能拉出字母字符,假設您只需要a-z?

using System.Text.RegularExpressions; 

var str = "hello_16_0_2016"; 
var onlyLetters = Regex.Replace(str, @"[^a-zA-Z]", ""); 

// onlyLetters = "hello" 
1

我會用這樣的事情(使用LINQ):

var str = "hello_16_0_2016"; 
var result = string.Concat(str.Where(char.IsLetter)); 

Check it out

或者,如果性能是一個問題(因爲你必須這樣做在緊密的循環,或者必須轉換數十萬個字符串),它可能會更快地執行:

var result = new string(str.Where(char.IsLetter).ToArray()); 

Check it too

0

但由於信件出現是隨機的,我想提取從上面的字符串只 字母,所以有人引導我正確的 程序做到這一點?

下面將提取第一文本,沒有數字的串的任何位置:

Console.WriteLine(Regex.Match("hello_16_0_2016", @"[A-Za-z]+").Value); // "hello" 
相關問題