0

文字列の下からダブルスペースと文字を削除する方法を教えてください。

文字列=Test----$$$$19****45@@@@ Nothing

クリーンな文字列=Test-$19*45@ Nothing

私は正規表現を使用"\s+"しましたが、二重スペースを削除するだけで、他のパターンの正規表現を試しましたが、複雑すぎます...助けてください。

私はvb.netを使用しています

4

4 に答える 4

5

実行したいのは、任意の文字への後方参照を作成してから、その後方参照に一致する次の文字を削除することです。通常、パターンを使用して可能です。パターン(.)\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, "")

編集:含まれている例

于 2013-01-03T13:31:35.810 に答える
1

より高速な代替方法については、次を試してください。

        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())
于 2013-01-04T17:27:28.270 に答える
0

複数の非単語文字をすべて1つだけで置き換えるperlの方法は次のとおりです。

my $String = 'Test----$$$$19****45@@@@ Nothing';
$String =~ s/(\W)\1+/$1/g;
print $String;

出力:

Test-$19*45@ Nothing
于 2013-01-03T13:32:35.767 に答える
0

これが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
于 2013-01-03T13:37:01.613 に答える