- ベストアンサー
文字列操作で特別な記号の間値取得方法は
文字列操作で特別な記号の間値取得方法はどうでしょうか。 たとえば <column dbType="bpchar" javaType="String" name="subjectcode" required="true"> とString値に格納されている場合、 name="から始まって"で終わる部分の値を取得したいです。 つまりsubjectcodeを取得しています。 name="--- " の中は(""の間)変更されるので name="--- " の---部分を取得するロジックが必要です。 もしやり方を御存じなら教えていただきたいです。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
XMLなら自前で正規表現を書くような手間は掛けずにDOMかSAXで読み込んで name属性を見る方が後々楽だと思う。
その他の回答 (2)
- nknk80
- ベストアンサー率65% (17/26)
こんな感じで取得できます。 String string="<column dbType=\"bpchar\" javaType=\"String\" name=\"subjectcode\" required=\"true\">"; //タグ名の終了位置までの検索用正規表現 Pattern startPattern=Pattern.compile("<[\\w]+"); Matcher matcher=startPattern.matcher(string); if(matcher.find()){ //タグ名の終了位置を記録 int attrIndex=matcher.end(); //属性名="属性値" 検索取得用正規表現 matcher.usePattern(Pattern.compile(" *([\\w]+)=\"([\\w]*)\"")); while(matcher.find(attrIndex)){ //取得属性値の標準出力 System.out.println(matcher.group(1)+" is ["+matcher.group(2)+"]"); //特定の属性名だけを取得したい場合 if("name".equals(matcher.group(1))){ System.out.println("nameの属性値は"+matcher.group(2)+"です"); } //次の検索開始位置を属性の終了位置に設定 attrIndex=matcher.end(); } }
- _ranco_
- ベストアンサー率58% (126/214)
正規表現のふつうの課題ですね。 まだこれから勉強されるかたのようなので、ここではあえてソリューションのコードは書きません。