【发布时间】:2019-08-01 12:24:24
【问题描述】:
我正在使用 .NET 2.1,我需要删除字符串的一些额外部分,但问题是这些部分不会在开头或结尾出现。他们介于两者之间。例如我们有:-
阿里和艾哈迈德是非常非常要好的朋友。
但我想要
阿里和艾哈迈德是非常要好的朋友。
我知道问题的发生。有没有办法可以从字符串中删除“非常”这个词。
【问题讨论】:
我正在使用 .NET 2.1,我需要删除字符串的一些额外部分,但问题是这些部分不会在开头或结尾出现。他们介于两者之间。例如我们有:-
阿里和艾哈迈德是非常非常要好的朋友。
但我想要
阿里和艾哈迈德是非常要好的朋友。
我知道问题的发生。有没有办法可以从字符串中删除“非常”这个词。
【问题讨论】:
您可以使用source.Replace("very",string.Empty);
String.Replace(oldString,newString) 将第二个参数设置为 string.Empty 与从源字符串中删除所有“oldString”相同。
【讨论】:
very good 之间留下两个空格。他们可以替换 "very " 或 " very" 来避免这种情况。
你可以试试正则表达式:
要删除"very" 的后续重复项:
using System.Text.RegularExpressions;
...
string source = "Ali and Ahmed are very very good friends.";
string result = Regex.Replace(source, @"(very)(\s+\1)+", match => match.Groups[1].Value);
要删除任何个单词的后续重复:
string source = "Ali and Ahmed are are are very very good friends.";
string result = Regex.Replace(source, @"(\w+)(\s+\1)+", match => match.Groups[1].Value);
在这两种情况下,result 都是
Ali and Ahmed are very good friends.
【讨论】:
如果您知道要删除的部分的起始索引和结束索引,则可以使用此方法
public static string Delete(string str, int start, int end)
{
return str.Substring(0, start)
+ str.Substring(end, str.Length-end);
}
这里是要删除的部分的排他索引 例如
Delete("0123456789",3,5) -> "01256789"
【讨论】: