|
■No15225 (HappyLove さん) に返信
> VB.NET2003を使用しています。プログラムの勉強はまだ2ヶ月です。
>
> 「会社名」
> ○○株式会社
> △△(株)
> 梶栫栫
> (株)×××
> 株式会社 ○○○
>
> ↑分かりにくいかもしれませんが、エクセルのある列に「会社名」の列があって、
> いくつか会社名が載っています。
> この会社名を1行ずつセルから取得した時に、前カブ・後カブ(/株式会社)がある場合は、
> これを除いて会社名を表示する、という方法が思い浮かびません。
社名を付ける際の規則(法律)があれば、それを探そうと思ったのですが、
ちょっと探しきれていません。なので、社名の規則によってはNGな方法かもしれませんが、
RegExクラス(System.Text.RegularExpressions名前空間)のReplaceメソッドを使うと
前カブ、後カブを気にしなくてよいので簡単だと思います。
※社名の規則で、社名自体にも株式会社を含めることが許容されていたりすると
この方法ではダメで、前なのか後なのかを意識した作りにする必要があります。
> ちなみに省きたい文字列の考えられるパターンは、
> @「株式会社」
> A「梶v(記号一文字)
> B「(株)」(両カッコが全角)
> C「(株)」(後ろカッコが半角)
> D「(株)」(前カッコが半角)
> E「(株)」(両カッコが半角)
> です。
上記の条件を元にRegEx.Replaceメソッドを使ってサンプルを作ってみました。
Option Strict On
Imports System.Text.RegularExpressions
Module Test
Sub Main
Dim re As New RegEx("(株式会社|掛[((]株[))])")
Dim inputStrs As String() = New String(){ _
"株式会社TEST", _
"株のX株式会社", _
"(株)テスト半半", _
"(株)テスト全全", _
"(株)テスト半全", _
"(株)テスト全半", _
"椛蜩摎フ", _
"ダミー" _
}
For Each inputStr As String In inputStrs
Dim resultStr As String = re.Replace(inputStr, "")
Console.WriteLine(resultStr)
Next
End Sub
End Module
|