2010-06-02 62 views
32

如何有效地删除字符串“。”前的所有字符?删除字符前的字符“。”

输入: Amerika.USA

输出: 美国

+2

有没有永远只打算是一个时期? – 2010-06-02 15:54:05

+0

@James Black:是 – loviji 2010-06-02 15:55:09

回答

85

您可以使用IndexOf methodSubstring method像这样:

string output = input.Substring(input.IndexOf('.') + 1); 

上面没有错误处理,所以如果输入字符串中不存在句点,则会出现问题。

+6

@casperOne实际上,如果没有找到,实际上IndexOf不返回-1,并且字符串用于引用子字符串,所以在技术上如果没有句点它会返回整个字符串,对吗?我认为只要字符串不为空就足够了。 – jcolebrand 2010-06-02 16:00:34

+0

@drachenstern:如果未找到,IndexOf将返回-1,如果传递给Substring,则将引发ArgumentOutOfRangeException。 – casperOne 2010-06-02 16:25:48

+0

@casperOne〜tut tut,它的-1'+ 1' ...所以它会一直是零或更多。你的代码不是我的;) – jcolebrand 2010-06-02 16:31:43

4
String input = ....; 
int index = input.IndexOf('.'); 
if(index >= 0) 
{ 
    return input.SubString(index + 1); 
} 
10
string input = "America.USA" 
string output = input.Substring(input.IndexOf('.') + 1); 
3
public string RemoveCharactersBeforeDot(string s) 
{ 
string splitted=s.Split('.'); 
return splitted[splitted.Length-1] 
} 
+0

注意:这将导致保留虚线的两个(或全部)部分,如果您需要所有这些部分,那么这些部分是可取的,但如果您只需要最后一部分则不需要。 – Joey 2010-06-02 15:57:01

20

你可以试试这个:

string input = "lala.bla"; 
output = input.Split('.').Last(); 
+3

如果有多个期间,您将遇到问题。 – 2013-02-27 16:44:53

+0

@MikeCole为什么? .Last()将确保您在一段时间后得到最后一个单词 – 2015-11-30 03:51:22

2

两个方法,如果字符不存在,返回原始的字符串。

这一个切串枢轴的第一次出现之后:

public static string truncateStringAfterChar(string input, char pivot){   
    int index = input.IndexOf(pivot); 
    if(index >= 0) { 
     return input.Substring(index + 1);   
    }   
    return input;  
} 

这一个,而不是削减枢轴的最后出现之后的字符串:

public static string truncateStringAfterLastChar(string input, char pivot){   
    return input.Split(pivot).Last(); 
}