• ベストアンサー

指定した文字を削除したい

こんにちは。質問をさせてください。 --------------------------------------------------------------- address = "ここ$http://www.aaaaa.co.jp$moji=dddd$"; --------------------------------------------------------------- 変数addressに格納された文字列で、 "http://"の1文字前に"$"があった場合は、 "$"を削除したいのですが、どのようにすれば いいでしょうか? ※http://の前の"$"以外はそのまま残します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

#include <iostream> #include <string> int main() { std::string address = "ここ$http://www.aaaaa.co.jp$moji=dddd$"; std::string::size_type pos = address.find("$http://"); if ( pos != std::string::npos ) { address.erase(pos,1); } std::cout << address << std::endl; return 0; }

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • me_no_car
  • ベストアンサー率24% (22/90)
回答No.3

いろいろやり方はあると思いますが 基本的なやり方として こんな感じでどうでしょう? #include <stdio.h> int main() { int flag; char *address = "ここ$http://www.aaaaa.co.jp$moji=dddd$"; char *wk; for( wk=address , flag=0 ; *wk ; wk++){ if( *wk == '$' && flag == 0){ *wk = *(wk + 1); flag = 1; } else if( flag == 1 ){ *wk = *(wk + 1); } } printf("address = [ %s ] \n", address); }

全文を見る
すると、全ての回答が全文表示されます。
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

#1の方のはC++ですが、Cの方での考え方を書きます。 文字列の中で"$http://"を検索して、 存在しなければなにもしない。 存在すれば、一個ずつずらせばいいわけです。 つまり、文字列を、一個ずらして自分自身にコピーするわけです。 検索には標準関数strstr()を使います。(教科書を見てください) ずらしてコピーするにはどうしたらいいかな…。 ただのコピーならstrcpy()という関数があるのですが、 こいつは「コピー元とコピー先が同じだった場合、未定義(プログラムとして問題あり)」という制限があります。 だからwhileかdo whileを使えばいいでしょう。 だいたいこんな感じになると思います。 (コンパイルはしてないので自信なしですが) char *p; p = strstr(data, "$http://"); if(p){ do{ *p = *(p+1); }while(*(p+1)); }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • substrで抜き取った全角文字列を正常に表示

    $moji1 = 'あいうえおかきくけこさしすせそ'; $moji2 = 'あいうえお...かきくけこ'; $moji3 = 'なにぬねの'; 上記のような3つの文字列を格納した変数があります。 それぞれの変数を使いリンクを貼りたいのですが、20バイトを超えた変数に対しては、substrで20バイトまでを表示し、リンクするようにします。 以下は$moji1をリンクにするソースです。 $byte = strlen($moji1); if ($byte > 20) {  $moji1 = substr($moji1,0,20); } echo '<a href="#">'.$moji1.'</a>'; moji2、moji3も全く同じ処理をします。 結果はmoji1、moji3は上手くいくのですが、moji2に関しては <a href="#">あいうえお...かき/a> このように</a>の'<'が消えてしまいます。 恐らく、20バイト目が全角で、表示が上手くいっていないのだと思うのですが、対処法がわかりません。 今は全角に変換してごまかしていますが、半角のものはなるべく半角で表示したいのです。 moji2を正常に表示させるには、どのような書き方をすれば良いのでしょうか。 アドバイスお願いします。

    • ベストアンサー
    • PHP
  • 指定文字から指定位置の文字を除く文字を抽出する

    例えば 文字列「Momotarou too inu kiji」だとして 先頭から11文字目の「t」から13文字の「o」である「too」を抜き出した 文字列「Momotarou inu kiji」を抽出したいと思います。 希望は、 Functionプロシージャで自前の関数です。 (関数にする必要無い場合など別案でも回答としては十分です。) ターゲット文字列(Moji)と最初と最後の文字数(Fp,Lp)を指定して 抽出する文字列(New_Moji)だとすれば New_Moji(Moji,Fp,Lp) ---> New_Moji("Momotarou too inu kiji",11,13) のような型式を想定しています。 特定の文字よりinstrとLeftを利用して左部分にある文字列を取り出すなどの コードは出来るのですが問題の関数となると今の私には難しいです。 Office 2021 / Windows_11

  • 指定範囲を削除する方法

    phpで変数内の文字列から指定した範囲を削除するということは可能でしょうか。 たとえば、 変数に「いろはにほへとちりぬるをわかよたれそ」という文字列が 入っていた場合、「ほへ」から「わか」の範囲、 つまり「ほへとちりぬるをわか」を削除して 元の変数に「いろはによたれそ」を入れたいのです。 お分かりの方、お教えいただければ幸いです。 どうぞ、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 文字列をint型に変換したいのですが

    文字列をint型に変換して、計算に使用したいのですが うまくいきません。 char moji[0] = '1' moji[1] = '2' moji[2] = '3' この文字列をひとつずつint型の変数に代入したいのですが atoi関数を使用した場合、文字列全ての値が変換されてしまいます。 どうしたらいいのでしょうか? お答えいただけるとありがたいです。

  • 入力項目をアドレス欄に反映したい。

    Javaとの連携(JSP)です。 入力項目を受け取り、アドレス欄にその入力項目を表示したいのですが… function Search(var moji){ alert(moji); DoAdr(Submit(), '/Search?CATEGORY=moji'); } DoAdrはsubmitボタンを押されたとき遷移するURLを決定する関数で、 例えば、DoAdr(Submit(),'/Search?CATEGORY=1') と入力されていた場合、 Submitを押すと、 http://~(中略)/Search?CATEGORY=1 に遷移します。 入力された文字列をmojiに格納するところまではできていますが、 [alert(moji);で正しく文字列が表示される] アドレス欄にhttp://~(中略)~/Search?CATEGORY=moji と そのまま表示されてしまいます。 変数の中身をアドレス欄に表示する方法を教えてください。お願いします。

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • PHPの変数で最初から2行分の文字列を取得したい

    phpで変数に格納されたデータの最初の2行分の文字列だけを取り出す方法を教えてください。 例)複数行のデータ(\n区切り) aaaa bbbb cccc dddd 上記のデータが変数$valueに格納されています。 $valueに格納されたaaaa~bbbbまでを取得するにはどうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • マクロにて指定の文字間の文字を指定文字とともに削除

    エクセル2003です。 マクロで以下の事を行いたいです。 セル内の文字の中で (( )) で囲まれた文字を(( )) もろとも削除して 別の列に転記したいです。 C列に品名があり、行数は都度違います。 上から順に調べて (( )) が有ったら (( ))もろともその間の文字を削除してD列に転記する。 (( ))が無いセルはそのまま転記。 ( )の場合もあるがそれは削除対象外。 品名の文字は文字数は決まっていません。MAX数も決まっていません。 また(( ))内の文字数も決まっていません。  ( は半角です。 大変あつかましくすいませんがコードそのものを教えてください。 よろしくお願いします。 例 DE-500((ABC)) ↓ ((ABC))を削除 DE-500 HV-32578934-B(BOH) ↓  ( )はあるが(( ))が無いから変更無し HV-32578934-B(BOH) AH-57BD-645(マイクロソフト)((OKウエブ)) ↓ ((OKウエブ))を削除 AH-57BD-645(マイクロソフト) BCF-562BN-DER ↓ (( ))が無いから変更無し BCF-562BN-DER

  • マクロ変数内の文字削除

    変数mySpr(文字列変数)の"123456789"から4567を削除し"12389"に変えるにはどうすれば良いでしょうか。

  • 前から60文字だけを取り出して表示

    データベースに格納してあるデータの前から60文字だけを取り出してHTMLで表示させたいのですがうまくいきません。私が作ったソースは次のとおりです。 ($industry)=格納してある変数=~/^(............................................................)$/; 「格納してある変数」から先頭60文字を取出し「$industry」に入れる としたつもりなのですが,結果は$industryに何の値も入ってきていません。どうか教えていただけないでしょうか?お願いします。

    • ベストアンサー
    • Perl
このQ&Aのポイント
  • UA-3FXはウィンドウズ10で使用可能な製品ですか?
  • UA-3FXはローランド製品やボス製品として知られています。
  • この製品について、ウィンドウズ10での使用に関する情報を教えてください。
回答を見る