我只是想知道是否有一种简单的方法可以做到这一点。即用相同的字符替换连续字符的出现次数。
例如: - 如果我的字符串是“likeeeee tttthhiiissss”,那么我的最终输出应该是“像这样的东西”。
字符串也可以包含特殊字符,包括空格。
你们可以提出一些简单的方法吗?
答案 0 :(得分:12)
这应该这样做:
var regex = new Regex("(.)\\1+");
var str = "something likeeeee!! tttthhiiissss";
Console.WriteLine(regex.Replace(str, "$1")); // something like! this
正则表达式将匹配任何字符(.)
,而\\1+
将匹配第一组中捕获的任何字符。
答案 1 :(得分:4)
string myString = "something likeeeee tttthhiiissss";
char prevChar = '';
StringBuilder sb = new StringBuilder();
foreach (char chr in myString)
{
if (chr != prevChar) {
sb.Append(chr);
prevChar = chr;
}
}
答案 2 :(得分:1)
怎么样:
s = new string(s
.Select((x, i) => new { x, i })
.Where(x => x.i == s.Length - 1 || s[x.i + 1] != x.x)
.Select(x => x.x)
.ToArray());
在英语中,我们正在创建一个基于char []数组的新字符串。我们通过应用一些LINQ运算符来构造char []数组:
Select
:捕获索引i
以及当前字符x
。x.x
中选择字符x
。string
。答案 3 :(得分:0)
Console.WriteLine("Enter any string");
string str1, result="", str = Console.ReadLine();
char [] array= str.ToCharArray();
int i=0;
for (i = 0; i < str.Length;i++ )
{
if ((i != (str.Length - 1)))
{ if (array[i] == array[i + 1])
{
str1 = str.Trim(array[i]);
}
else
{
result += array[i];
}
}
else
{
result += array[i];
}
}
Console.WriteLine(result);
在此代码中程序;
2.使用 string.ToChar()
转换char数组中的字符串循环将针对字符串
存储在数组中特定位置的每个字符将与存储在大于该位置的位置1中的字符进行比较。如果找到相同的字符,则使用 .ToTrim()
对于最后一个字符,循环将显示索引出错的错误,因为它将是数组的最后一个位置值。这就是我使用* if((i!=(str.Length - 1)))*
6.修剪后留下的字符以串联形式存储。
答案 4 :(得分:-2)
word =“喜欢的人tttthhiiisssss” re.sub(r“(。)\ 1+”,r“ \ 1”,word)