给定任何字符串,我想删除特定字符后的任何字母。
此字符可能在字符串中多次出现,我只想将其应用于最后一次出现。
所以我们说“/”是字符,这里有一些例子:
http://www.ibm.com/test ==> http://www.ibm.com
你好/测试==>喂
答案 0 :(得分:30)
if (text.Contains('/'))
text = text.Substring(0, text.LastIndexOf('/'));
或
var pos = text.LastIndexOf('/');
if (pos >= 0)
text = text.Substring(0, pos);
(编辑以涵盖字符串中不存在'/'的情况,如评论中所述)
答案 1 :(得分:1)
另一种选择是使用String.Remove
modifiedText = text.Remove(text.LastIndexOf(separator));
通过一些错误检查,可以将代码提取到扩展方法,如:
public static class StringExtensions
{
public static string RemoveTextAfterLastChar(this string text, char c)
{
int lastIndexOfSeparator;
if (!String.IsNullOrEmpty(text) &&
((lastIndexOfSeparator = text.LastIndexOf(c)) > -1))
{
return text.Remove(lastIndexOfSeparator);
}
else
{
return text;
}
}
}
可以像:
一样使用private static void Main(string[] args)
{
List<string> inputValues = new List<string>
{
@"http://www.ibm.com/test",
"hello/test",
"//",
"SomethingElseWithoutDelimiter",
null,
" ", //spaces
};
foreach (var str in inputValues)
{
Console.WriteLine("\"{0}\" ==> \"{1}\"", str, str.RemoveTextAfterLastChar('/'));
}
}
<强>输出:强>
"http://www.ibm.com/test" ==> "http://www.ibm.com"
"hello/test" ==> "hello"
"//" ==> "/"
"SomethingElseWithoutDelimiter" ==> "SomethingElseWithoutDelimiter"
"" ==> ""
" " ==> " "