c# の文字列から繰り返される部分文字列をどのように削除しますか? たとえば、次の文字列の場合:
This is a test test string
繰り返される「テスト」は削除され、結果が作成されます。
This is a test string
または
shift+shift+shift+shift+d
「shift+shift+shift+」が削除され、結果として
shift+d
あなたの質問自体によって、文を変えることによって繰り返される単語が削除され、単語の繰り返される文字が削除されることを願っています。
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp
{
internal class Program
{
private static void Main()
{
var input = new[] {"This is TEST TEST string", "shift+shift+shift+D"};
foreach (string data in input)
{
bool contains = data.Contains((char)0x20);
Console.WriteLine(contains ? StripFromSentence(data.TrimEnd(new[] {(char) 0x20})) : StripFromWord(data));
}
Console.ReadLine();
}
private static string StripFromWord(string word)
{
char[] chr = word.ToCharArray();
var ap = new HashSet<char>();
foreach (char s in chr)
ap.Add(s);
return ap.Aggregate(string.Empty, (current, c) => current + c);
}
private static string StripFromSentence(string sentence)
{
string[] strings = sentence.Split(new[] {(char) 0x20});
var ap = new HashSet<string>();
foreach (string s in strings)
ap.Add(s);
return ap.Aggregate(string.Empty, (current, word) => current + (word + (char)0x20));
}
}
}