• 締切済み

先頭 中央 末尾 スぺースチェック

ある文字列の先頭と末尾の全角スペースを削除し、文字列の途中での(全角または半角)スペースは1つだけ残る(複数入った場合)のチェックはどうしたら要いいでしょうか? ご教授願います。

  • laoyu
  • お礼率62% (15/24)

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.5

どうすればって もう書いたじゃない。 もう一回表現を変えて書いてあげるわね。 あなたが一番下で提示しているロジックの replace処理の後に もう一回replaceしてあげる必要があるの。 次のreplace文は 全角スペースが1つ以上あったら1つに置き換える という感じになるわね。

laoyu
質問者

お礼

何回も教えていただきまして、ありがとうございました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

何なの?そのif文? \sを入れているってことは全角スペース以外も対象になっているのね。 > やはりうまく行かなかったのはなぜ 具体的にどう上手くいかなかったのか書いてくれないと困るわ。 そもそも "  あああ   いいい  ううう   " が "あああ いいい ううう" でいいのかにも答えてくれてないから あなたの目標がまだわかっていないのよ。 まあこれが目標って思い込むけど。 if文の謎はおいておいて あなたのreplaceだと 両端のスペースは取り除けても 真ん中が処理できないのではなくて? 真ん中のを処理するにはもう一回replaceが必要だわ。 1回のreplaceではどうすることもできないから必ず2回必要なの。 次のreplace文は 全角スペースが1つ以上あったら1つに置き換える という感じになるわね。

laoyu
質問者

補足

>"  あああ   いいい  ううう   "       ↓↓ >"あああ いいい ううう" はっきり言わなかった、すみません。 askaaskaさんの言ったような結果になるには、どうすればよいでしょう?

noname#84373
noname#84373
回答No.3

2です。訂正です。こんなの? alert('  文 字 列 1  '.replace(/^ +| +$/gm,'').split(/ | /gm).length+'ある');

noname#84373
noname#84373
回答No.2

alert(' 文 字 列 1 '.replace(/^ | $/gm,'').split(/ | /gm).length+'ある');

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

"  あああ   いいい  ううう   " が "あああ いいい ううう" になるってことかしら。 replaceで正規表現を使えば2行でできるわよ。

laoyu
質問者

お礼

ありがとうございました、 実は自分のはほうは以下のように書いてみましたが、やはりうまく行かなかったのはなぜ? もしよかったら、またご教授をお願いします。 <%@ page contentType="text/html; charset=Windows-31J" %> <HTML> <HEAD> <TITLE>テスト</TITLE> <SCRIPT type ="text/JavaScript"> function trim(str){ // 前後の全角・半角スペースを削除 if( str = str.replace(/^[\s ]+|[\s ]+$/g,"")){ // オブジェクトの中身を str にし、str を返す return str; } } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="testForm" METHOD="post" ACTION="/jsptest/test.jsp"> <TEXTAREA WRAP="hard" NAME="str"></TEXTAREA> <INPUT TYPE="button" VALUE="送信" ONCLICK="trim()"> </FORM> <% String str = request.getParameter("str"); %> あなたの送信した情報は【<%=str%>】です。 </BODY> </HTML>

関連するQ&A

  • 半角全角スペースの削除(先頭&末尾)

    やまとです。 ある文字列の先頭と末尾のスペースを取り除きたいのですが、 どのようにしたら良いでしょうか? 事前に試した事が2つあります。 1.trim を使用する。  $aiueo = " あいうえ お "; $aiueo = trim($aiueo));  とすると、スペースが削除されます。  しかし、これでは全角のスペースが削除されないようですね。 2.置換する。  $aiueo = " あいうえ お ";  $aiueo = str_replace( ' ', '', $aiueo );  とすると、全角のスペースが削除されます。  しかし、文字列の先頭と、末尾以外の全角スペースも削除されてしまう  ようですね。 では、文字列の先頭と末尾の半角スペースと全角スペースを削除したい場合は どのようにしたら良いでしょうか? ご教授願います。

    • ベストアンサー
    • PHP
  • 末尾の全角スペースの削除

    SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。

  • SQLServerで文字列の末尾からある位置で取出

    SQLServer2012で selectで文字列の末尾から(右から)ある文字の位置までを取り出したいのですが どのようなSQLにすればよいのでしょうか。 やりたいことは、 例えば、文字列「abc 123 xyz」があるとします。 末尾から(右から)見て、最初に見つかった半角スペースから後ろ「xyzを取り出し たいです。 RIGHT を使えば取り出すことはできるのですが、取り出したい文字列の長さが同じ でないので使うことができません。 お願いします。

  • エクセルVBA 先頭と末尾(後尾)に文字入力する

    エクセルVBAについて教えてください (1)選択した複数のセルに文字入力がされていた場合、入力文字の先頭に*を入力させたい (2)選択した複数のセルに文字入力がされていた場合、入力文字の末尾(後尾)に*を入力させたい (3)選択した複数のセルに文字入力がされていた場合、入力文字の先頭と末尾(後尾)に*を入力させたい (1)一応、これで先頭に*が入力されました Sub test1() Dim c As Range For Each c In Selection If Len(c.Value) > 0 Then c.Value = "*" & c.Text Next End Sub (2)失敗(構文エラーになります) Sub test2() Dim c As Range For Each c In Selection If Len(c.Value) > 0 Then c.Value = c & "*".Text Next End Sub どのようにしたら、末尾に*を入力させられるのでしょうか (3)不明 (1)はできたのですが、(2)(3)はどうしたらよいか分かりません もし、(1)も変更した方が良いのであればそれも教えてください よろしくお願いします

  • JAVA で入力された文字の・・・・

    JAVAでJSPのテキストボックスに入力された文字列に、「全角スペース、半角スペース、¥t(タブ)、¥」が入っているかをチェックして、対象文字があれば削除する処理を行いたいのですが、どのようにすればよいのでしょうか?

  • 文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結

    文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結果? 下記コードのように「文字列に半角・全角スペースが入っているかをチェックする関数」を作りました。 $textに入る文字列に半角・全角のスペースが入っているかをチェックします。 -------------------------------------------- my $text = "東 京"; if( isSpace($text) ) {   print "スペースあり"; } else {   print "スペースなし"; } sub isSpace{   my $str = shift || return(undef);   if( $str =~ /.*[\s ]+.*/ ){     return(1);   }else{     return(0);   } } -------------------------------------------- しかしなぜか1行目を my $text = "メ"; とするとスペースが入っているという結果になってしまいます。 なぜ「メ」が入ると半角もしくは全角のスペースとみなされてしまうのでしょうか? また、どうすれば正しくチェックできるようになりますか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • WORDで行の先頭を揃えるには

    ワードで行の先頭が揃いません。. "1行目のインデント"等使うのですが 微妙に先頭が揃いません。下記のように、 揃える文字の前に半角全角等異なる文字がある場合 特に先頭が揃いません。 例                あああああ    1) Aaaaa   2) WAAAQあい   3) ああああqqq2 4) 上記の1)2)3)4)を左に縦一列に揃えることは難しいのですが よい方法をお教えください。宜しくお願いします。

  • WORDで行の先頭を揃えるには

    ワードで行の先頭が揃いません。. "1行目のインデント"等使うのですが 微妙に先頭が揃いません。下記のように、 揃える文字の前に半角全角等異なる文字がある場合 特に先頭が揃いません。 例                あああああ    1) Aaaaa   2) WAAAQあい   3) ああああqqq2 4) 上記の1)2)3)4)を左に縦一列に揃えることは難しいのですが よい方法をお教えください。宜しくお願いします。

  • OCRで読み取った英文を正規表現を使って整形したい

    英文をOCRで読み取ったデータがあります。 ワードなどに入れるには、末尾の余分な改行が邪魔で削除したいので、秀丸エディタを使用して整形したいと思っています。 何段階かに分けてしないといけないと思いますが、アドバイスをいただければと思います。 以下にある程度考えたものを書きますので、ご指摘いただけば幸いです。 1) 全角文字を半角にする 右クリックメニューから「ハンカクに変換」 2) スペースやタブのみの行のスペースを削除 置換で、^[ \t]+\n → \n 3) 末尾の余分なスペースを削除 置換で、 $ → なし (※ 検索文字列の$の前には半角スペースがある。) 4) 単語の途中で改行されている単語をくっつける(末尾の-を削除し、次の行と繋げる) 5) .や?や! で終っていない行末の改行を削除 上記のような流れで大丈夫でしょうか? 4)は、[a-z]-$ で検索すれば、単語を分割する末尾のハイフンは探してくれますが、それを削除して、次の行と繋げることができず、とりあえずキーマクロで処理しました。 具体的には、キーマクロ登録開始、F3で検索、一文字シフトしてハイフンと改行を削除、キーマクロ終了で、登録しておいて、後は連続的にキーマクロを実行しました。 5)は、小文字で始まっている行の先頭を探し、スペースを入れて、バックスペースで前の行とつなぎました。 ^[a-z] それでも行末が変な所があったので、 [^\.\!\?]$ で検索して、個別に直していきました。(タイトル行などで、ピリオドで終わらない場合もあるので。) このような整形の必要性は割とありそうなのですが、なかなかいい情報が見当たりませんでした。 アプリケーションも探しましたが、なかなか見つからなかったのと、見つかったものもうまくいきませんでした。 何かうまい方法などありましたら、教えてください。

  • エクセルで左端のスペースを削除したいです。

    こんにちは いつもお世話になっています。 エクセル2003を使っています。 A列に人名の文字列があります。左端に半角のスペース、文字列の中に全角のスペース、右端にスペースはありません。文字の個数は人名のため様々です。 ここで、左端の半角スペースだけを削除したいのです。 Ltrim関数というのが当てはまるのでしょうか。 半角スペースの削除の方法を教えてください。

専門家に質問してみよう