0

やあみんな私はこの質問で立ち往生しています。助けてください。

入力文字列からアルファベット文字や特殊文字を抽出できるプログラムを書きたいです。英字とは、「a」から「z」までの任意の文字(大文字と数字は含まれません)です。特殊文字とは、英数字以外の任意の文字です。

例:

string = hello//this-is-my-string@capetown

alphanumerical characters = hellothisismystringcapetown

special characters = //---@

今私の質問はこれです:

  1. すべてのキャラクターをループするにはどうすればよいですか?

    (私が使用しているforループはfor x = 0toのような読み取りですstrname.length)...これは正しいですか?

  2. 文字列に文字を抽出するにはどうすればよいですか?

  3. 特殊文字を判別するにはどうすればよいですか?

どんな入力でも大歓迎です。
お時間をいただき、誠にありがとうございます。

4

2 に答える 2

0

値を保持する必要があるため、文字列をループする必要があります。結果として文字のリストを保持しておくと、後で新しい文字列を作成できるので便利です。次に、単純な正規表現テストを利用して、配置する場所を決定します。擬似コードは次のようになります。

Dim alphaChars As New List(Of String)
Dim specialChars As New List(Of String)

For Each _char As Char in testString

   If Regex.IsMatch(_char, "[a-z]")) Then

      alphaChars.Add(_char)

   Else

      specialChars.Add(_char)

   End If

Next

次に、結果を完全な文字列にダンプする必要がある場合は、単純に使用できます

String.Join(String.Empty, alphaChars.ToArray())

このコードは az 以外のすべてが特殊文字と見なされることを前提としているため、必要に応じて、else 句で 2 番目の正規表現を実行して、同様の方法で特殊文字をテストできます。それは、入力をどれだけ制御できるかに大きく依存します。

于 2012-11-06T15:26:26.307 に答える
0

次のように各文字をループできます。

For Each _char As Char In strname
    'Code here
Next

また

For x as integer = 0 to strname.length - 1
    'Code here
Next

または、正規表現を使用して、文字列内の不要な値を置き換えることができます (これはより高速であると思いますが、私は専門家ではありません) http://msdn.microsoft.com/en-us/library/をご覧ください。 xwewkd1.aspx

編集

置換コードは次のようになりますが、正規表現 (パターンと呼ばれる変数は現在数字のみを置換するもの) が何であるかはよくわかりません。

Dim pattern As String = "(\d+)?" 'You need to update the regular expression here
Dim input As String = "123//hello//this-is-my-string@capetown"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, "")
于 2012-11-06T15:13:39.170 に答える