文字列の下からダブルスペースと文字を削除する方法を教えてください。
文字列=Test----$$$$19****45@@@@ Nothing
クリーンな文字列=Test-$19*45@ Nothing
私は正規表現を使用"\s+"
しましたが、二重スペースを削除するだけで、他のパターンの正規表現を試しましたが、複雑すぎます...助けてください。
私はvb.netを使用しています
実行したいのは、任意の文字への後方参照を作成してから、その後方参照に一致する次の文字を削除することです。通常、パターンを使用して可能です。パターン(.)\1+
は、その後方参照のみに置き換える必要があります(1回)。それが正確にどのように行われるかはプログラミング言語に依存します。
Dim text As String = "Test@@@_&aa&&&"
Dim result As String = New Regex("(.)\1+").Replace(text, "$1")
result
が含まれるようになりますTest@_&a&
。または、ルックアラウンドを使用して、そもそもその後方参照を削除しないようにすることもできます。
Dim text As String = "Test@@@_&aa&&&"
Dim result As String = New Regex("(?<=(.))\1+").Replace(text, "")
編集:含まれている例
より高速な代替方法については、次を試してください。
Dim text As String = "Test@@@_&aa&&&"
Dim sb As New StringBuilder(text.Length)
Dim lastChar As Char
For Each c As Char In text
If c <> lastChar Then
sb.Append(c)
lastChar = c
End If
Next
Console.WriteLine(sb.ToString())
複数の非単語文字をすべて1つだけで置き換えるperlの方法は次のとおりです。
my $String = 'Test----$$$$19****45@@@@ Nothing';
$String =~ s/(\W)\1+/$1/g;
print $String;
出力:
Test-$19*45@ Nothing
これがJavaでどのように見えるかです...
String raw = "Test----$$$$19****45@@@@ Nothing";
String cleaned = raw.replaceAll("(.)\\1+", "$1");
System.out.println(raw);
System.out.println(cleaned);
プリント
Test----$$$$19****45@@@@ Nothing
Test-$19*45@ Nothing