質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

Q&A

解決済

2回答

8507閲覧

C#:String.Trim メソッド で削除されない空白について

YuMo_tea

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

0グッド

0クリップ

投稿2020/03/05 06:26

編集2020/03/05 07:10

前提・実現したいこと

文字の末尾についている空白を削除するため、String.Trim メソッドを使用したが空白の削除ができなかった
今回削除できなかった空白の原因について知りたい

  • 今回の空白削除に関してはReplaceメソッドで対応した
  • MSのdocsを見て、削除できない空白の存在が有ることが分かったが、今回の件と関係があるのか不明なため原因を追求したい

発生している問題・エラーメッセージ

変数mcの中身はデータベースから取ってきています(mnは今回関係ありません)
削除できない空白を持っていたデータ
変数mcの末尾空白を削除したいと考えています

mcmn
0011一週間以内

C#

1class letter 2 { 3     public String mc{ get; set; } 4     public String mn{ get; set; } 5 ///他のプロパティが続く 6 }

該当のソースコード

Trimでmcの末尾空白を消去できず、結果が11 000 となり困っていました(欲しい結果は11000)

C#

1public static string convert(string mc) 2 { 3 4 //確認用にUTF8コードを取得 5 6 //↓のTrimができなかったため、returnでReplaceを使用した 7 mc.Trim(); 8 return mc.StartsWith("00") 9 ? (mc.TrimStart('0') + "000").Replace(" ", "") 10 : mc.Replace(" ", ""); 11 12 } 13

試したこと

mc = 0011 を文字コードに変換すれば何かわかるかなと思い、以下のコードに変換しました
UFT8コードについては、上記メソッド内で変換しています

  • UFT8コード:30-30-31-31-20 

C#

1 //確認用にUTF8コードを取得 2 var utf8 = System.Text.Encoding.UTF8.GetBytes(mc); 3 var s = BitConverter.ToString(utf8);
  • Unicode:U+0030 U+0030 U+0031 U+0031 U+0020

Unicodeはオレンジ工房様 (http://orange-factory.com/sample/utf8/code1.html) の文字コード表を参考にさせていただきました

補足情報(FW/ツールのバージョンなど)

.NET Framework4
Visual Studio 2010 Format Version 11.00

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/05 06:30

Trim は元の文字列を変更しません。戻り値を使ってください。
YuMo_tea

2020/03/05 06:58

アドバイスありがとうございます。コードの見直しを行いたいと思います。 (元の文字列を変更できないという考えが飛んでいました・・・)
guest

回答2

0

ベストアンサー

Trim()は値を返すだけのメソッドで、と言うか、
そもそもstring型が不変なので呼ぶだけでは変換された後の値は取得できません。

C#

1・・・ 2mc = mc.Trim(); 3・・・

こんな感じにして下さいってことですね。

投稿2020/03/05 06:42

yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuMo_tea

2020/03/05 07:03

回答ありがとうございます。初歩的なミスで申し訳ないです。 ご指摘いただいたように、変換後のデータを保持する変数を追加しました。
guest

0

まず公式の説明を読むところから始めましょう。
String.Trim メソッド

現在の文字列から、指定した文字セットを先頭および末尾の出現箇所からすべて削除した新しい文字列を返します。

String.Trim メソッドがそもそも不適で使い方も間違っていることを理解してください。

投稿2020/03/05 06:36

hihijiji

総合スコア4152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuMo_tea

2020/03/05 06:48

理解が不十分で申し訳有りません。 要らない空白をもった[0010 ]の文字列末尾にある空白文字をすべて削除するというコードを書きたくて、このメソッドを使用していました。 公式の説明を読み、提示されているコードをもっと詳しく見よう思います。 ご指摘ありがとうございました。
hihijiji

2020/03/05 06:52

> 結果が11 000 となり困っていました(欲しい結果は11000) 間の空白は取れませんし、新しい文字列を返す(元の文字列は変更しない)メソッドです。 書かれたReplaceで良いと思いますよ
YuMo_tea

2020/03/05 07:07

なるほどです。タイトルと関係ないところで躓いていたのですね・・・ どちらも場面に応じて使い分けできるよう練習してみます。 アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問