QA@IT

Java Split で<br/> を使用して文字分割するが、改行されない

2316 PV

Agaと申します。よろしくお願いいたします。
現在、JavaSE7 + teeda_1_0_13 + POI_3_9 + Excel2013 + Windows8.1
にてシステム開発をしております。
下記コードを使用して文字列の分割を行っていますが、1行目に<br/>が含まれたそのままの
文字列が表示されてしまいます。2行目には分割した文字列も表示されています。
1行目の改行を指定した位置で行うには、どのようにしたら良いのでしょうか?
(実行中の変数を見たのですが、正しく分割されています)
何卒、ご教示の程よろしくお願いいたします。

Pattern p_1 = Pattern.compile("<br[^>]*>" ,Pattern.CASE_INSENSITIVE);
String[] results_1 = p_1.split(getSagyou());        
int j = SAGYOU_ROW;
for (String result_1 : results_1) {
      HSSFRow row30 = sheet.getRow(j);
      HSSFCell cell30 = row30.getCell(SAGYOU_COL);              
      cell30.setCellValue(result_1);
      j++;
}

flied_onion様 ご回答戴きありがとうございました。
上記内容につきまして、大変単純なミスをしておりました。

変更前

Pattern p_1 = Pattern.compile("<br[^>]*>" ,Pattern.CASE_INSENSITIVE);
String[] results_1 = p_1.split(getSagyou());        
int j = SAGYOU_ROW;
for (String result_1 : results_1) {
    HSSFRow row30 = sheet.getRow(j);
    HSSFCell cell30 = row30.getCell(SAGYOU_COL);                
    cell30.setCellValue(result_1);
    j++;
}

Pattern p_4 = Pattern.compile("&lt;br/&gt;" ,Pattern.CASE_INSENSITIVE);
String[] results_4 = p_4.split(getSagyou());        
int m = SAGYOU_ROW;
for (String result_4 : results_4) {
    HSSFRow row30 = sheet.getRow(m);
    HSSFCell cell30 = row30.getCell(SAGYOU_COL);                
    cell30.setCellValue(result_4);
    m++;
}

のため、二つ目のコードで上書きされていたとういのが原因でした。
これをif ( results_1.length >= 1){分割できたかどうか
チェックすることで上書きを防ぐことができました。本当に申し訳ありませんでした。
質問した内容とは変わってしまいますが、getSagyou()の内容(金型破損し<br/>修理が必要)は、
Insertした際には、改行コードが<br/>に変換されているのですが2回目以降
Updateすると&lt;br/&gt;に変化し、3回目以降はamp~;と変化します。
本内容は、Teedaの仕様上仕方のないことでしょうか?

@Required
@TextareaSeparatorCharacterConverter
private String jyoukyou;
<h4>保全状況</h4>
<p><textarea id="jyoukyou" te:escape="false" rows="8" cols="50">jyoukyou</textarea></p>
<span id="jyoukyouMessage"></span>

上記のように設定しています。改行コードが<br/>から変化しないようにする方法は
ありますでしょうか?(ちなみに、textarea内にある改行コードを削除して改行すると
コードは<br/>に戻ります。何度も申し訳ありません。ご迷惑おかけしますが
ご教示の程よろしくお願いいたします。

  • (getSagyou()で取得される)具体的な文字列と、1行目と2行目に何が出力されるのか、getSagyouを使わない直接埋め込んだ文字でも起きるのか教えてください。
    とりあえずコンソールアプリでためしましたがsplitとfor文は確かに問題なさそうですね。
    -
  • それと文字列中に<br>タグが複数ある場合はどうなるんでしょう? -
ウォッチ

この質問への回答やコメントをメールでお知らせします。