如何有效地删除字符串中位于字符“.”之前的所有字符?
输入: Amerika.USA
输出: USA
如何有效地删除字符串中位于字符“.”之前的所有字符?
输入: Amerika.USA
输出: USA
您可以像这样使用IndexOf
方法和Substring
方法:
string output = input.Substring(input.IndexOf('.') + 1);
上面的代码没有错误处理,因此如果输入字符串中不存在句号,将会出现问题。
+1
... 所以它将始终为零或更多。这是你的代码,不是我的 ;) - jcolebrand你可以尝试这样做:
string input = "lala.bla";
output = input.Split('.').Last();
A.B.C
),您的答案将给出C
(删除最后一个句号之前的字符),而提问者可能希望得到B.C
(删除第一个句点之前的字符)。然而,由于提问者似乎认为输入字符串仅包含一个句号,因此并不十分清楚。 - Ruben9922C
而不是 B.C
,根据他的问题和例子。看起来他有一个由点分隔的层次结构。您的 A.B.C
示例作为层次结构将类似于 PlanetEarth.America.USA
。他可能仍然想捕获层次结构中的最后一项:USA
。 - C. Augusto Proietestring input = "America.USA"
string output = input.Substring(input.IndexOf('.') + 1);
我通常使用的扩展方法来解决这个问题:
public static string RemoveAfter(this string value, string character)
{
int index = value.IndexOf(character);
if (index > 0)
{
value = value.Substring(0, index);
}
return value;
}
public static string RemoveBefore(this string value, string character)
{
int index = value.IndexOf(character);
if (index > 0)
{
value = value.Substring(index + 1);
}
return value;
}
String input = ....;
int index = input.IndexOf('.');
if(index >= 0)
{
return input.Substring(index + 1);
}
这将返回新单词。
public string RemoveCharactersBeforeDot(string s)
{
string splitted=s.Split('.');
return splitted[splitted.Length-1]
}
以下是一些方法,如果字符不存在,则返回原始字符串。
这个方法在定位点之后第一次出现时截断字符串:
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();
}