タブを削除:Excel からコピーした1列が2列に分かれる理由
Excel から1列だけコピーすると、値の末尾にタブが残ることがあります。1行の入力欄に貼るとタブが列区切りと解釈され、値が2つに分かれたり送信に失敗したりします。削除すれば文字がつながり、検索欄やタグ欄に向いた形になります。
タブを削除するのが正解の場面
Excel で1列のセルをコピーすると、各値の末尾にタブが付くことがよくあります。1行しか受け付けない入力欄に貼ると、タブが列の区切りとして扱われ、値が2つに分かれたり送信時にエラーになったりします。スペースに置き換えるより削除するほうが確実で、値の中に空白が残る心配もありません。
古いシステムから書き出した固定幅のテキストも同じです。項目がタブで区切られていても、必要なのは連続した1つの文字列であったり、複数を1つのタグにまとめたい場合があります。区切りを消すほうが目的に合います。
- Excel の1列を1行の入力欄へ
- 旧システムの固定幅テキストの連結
- タグやキーワードの区切り除去
副作用を出さない使い方
削除するのはタブ(U+0009)だけです。半角スペース、全角スペース、その他の空白は残るため、インデント用のスペースは消えません。ただしタブだけで区切られていた2つの語はくっつき、「氏名」+タブ+「山田」が「氏名山田」になります。
間隔を残したい場合は、スペースをいくつ入れたいかを決めてタブをスペースに変換するツールを使ってください。削除は、もともとあるスペースを残したまま区切りだけを消したいときに使います。変換してから空白を整える、削除してから手で足す、といった組み合わせも可能です。
- 削除するのはタブのみでスペースは残る
- 前後の文字がくっつくので間隔は別途調整
- タブは見えないので事前に存在を確認する
使えない場面と代替手段
区切りとしてのタブとインデントとしてのタブを区別せず、どちらも削除します。タブでインデントされたソースファイルに使うと構造が壊れるため、コードにはエディタのインデント変換機能を使ってください。
行頭や行末のタブだけを消す、連続するタブを1つにまとめる、といった制御もできません。これらはエディタの正規表現が必要で、連続するタブを1つのスペースに置換する、行頭のタブだけに一致させる、といった指定になります。
- 区切りとインデントを区別せず削除する
- タブインデントのソースには使わない
- 細かい制御は正規表現で
よくある質問
2つの文字列がくっついてしまうのはなぜですか?
タブを削除すると区切りがなくなるため、「氏名」+タブ+「山田」が「氏名山田」になります。間隔を残したい場合は、タブをスペースに変換するツールを使ってください。
スペースや他の見えない文字も削除されますか?
削除されません。対象はタブ(U+0009)だけで、半角スペースや全角スペース、その他の空白はそのまま残ります。インデント用のスペースも消えません。
行頭のタブだけを削除できますか?
できません。タブがあれば位置を問わず削除します。行頭のインデントだけを消すには、エディタで行頭のタブに一致する正規表現置換を使うか、行頭・行末の空白を削除するツールを使ってください。
関連ツール:タブを削除