2016-11-15 119 views
-4

有没有一种方法可以根据任何标识符从我的字符串中删除子字符串?从字符串中删除子字符串

例如,我有:

string codeID = "347439>Dome"; 

我想有发生串的那一部分结果之前>

应该是这样的:

string newCodeId = "347439" 

是它可能?

+2

你尝试过什么了吗?可以查看IndexOf&Substring方法的文档 – PaulF

+2

是的,分割并得到第一个项目,或者得到一个子串直到第一次出现'>'(使用'IndexOf(“>”)')。 –

回答

4

,这可能是另一种可能性:

string codeID = "347439>Dome"; 

string newCodeId = codeID.Split('>')[0]; 

Console.WriteLine(newCodeId); 

它使用String.Split()方法返回一个string[]。为了得到string的左边部分,我带走了数组中的第一个元素。字符串的其余部分是(在这种情况下)在位置1

在字符串中没有>分隔符的情况。它将在[0]位置

3

您可以使用Split()方法:

string codeID = "347439>Dome"; 
string result = codeID.Split('>')[0]; 
+0

快20秒! ;)chapó –

0

这之后你的“>”

var newCodeId = Regex.Replace(codeID , "[>].*", string.Empty, RegexOptions.IgnoreCase) 
+2

用正则表达式来解决这个问题就像用大锤打开核桃 – Liam

+0

他没有具体说明他想怎么做。我明白不是每个人都赞赏正则表达式,在这种情况下,我发现它更简单。 – DaImTo

+0

这更多的是无效率。 RegEx引擎在C#中并不特别有效。与Substring()相比,这会产生很大的开销。在这种情况下,如果不是一个大问题,但我个人通常只会使用正则表达式作为最后一招。 – Liam

0

只返回整旧字符串应该取代一切我与伏波的答案达成一致,但你也可以使用string.split()功能拆分的字符串。并可以取第一个指标值。

string codeID = "347439>Dome"; 
string result = codeID.Split('>')[0]; 
0

您也可以使用System.Linq的:

string result = codeID.Split('>').First(); 
0

方法:子串()

string codeID = "347439>Dome"; 
char splitChar = '>'; 
if (codeID.Contains(splitChar)) 
{ 
int charIndex = codeID.IndexOf(splitChar); 
string subString = codeID.Substring(0,charIndex); 
}