デバッガで変数textにstring型の"hoge"が入っているが、falseになっている様子
- string型の変数の等価条件がTrueにならない理由が知りたい
前提
UnityでinputFieldに入力した値が意図した値になっておらず、等価比較をするとFalseになっておりました。Falseになってしまう理由を教えていただきたいです。
inputFieldには"hoge"を入力しております。
該当のソースコード
csharp
1using TMPro; 2using UnityEngine; 3 4namespace InputField 5{ 6 public class Text : MonoBehaviour 7 { 8 [SerializeField] private GameObject inputFieldGameObject; 9 private TextMeshProUGUI inputField; 10 11 private void Start() 12 { 13 // コード内でのinputFieldの設定 14 inputField = inputFieldGameObject.GetComponent<TextMeshProUGUI>(); 15 } 16 17 public void OnClick() 18 { 19 string text = inputField.text.Trim(); 20 21 if (text == "hoge") 22 { 23 Debug.Log("おなじ"); 24 } 25 else 26 { 27 Debug.Log("ちがう"); 28 } 29 30 if (text.Equals("hoge")) 31 { 32 Debug.Log("おなじ"); 33 } 34 else 35 { 36 Debug.Log("だからちがうんだって!"); 37 } 38 } 39 } 40}
試したこと
余計な空白、改行は無いことを確認しております。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答2件
1
ベストアンサー
c#
1using TMPro; 2using UnityEngine; 3 4 5public class Test : MonoBehaviour 6{ 7 [SerializeField] private GameObject inputFieldGameObject; 8 private TextMeshProUGUI inputField; 9 10 [SerializeField] 11 private TMP_InputField inp; 12 13 private void Start() 14 { 15 // コード内でのinputFieldの設定 16 inputField = inputFieldGameObject.GetComponent<TextMeshProUGUI>(); 17 18 } 19 20 public void OnClick() 21 { 22 string text = inp.text.Trim(); 23 24 if (text == "hoge") 25 { 26 Debug.Log("おなじ"); 27 } 28 else 29 { 30 Debug.Log("ちがう"); 31 } 32 33 if (text.Equals("hoge")) 34 { 35 Debug.Log("おなじ"); 36 } 37 else 38 { 39 Debug.Log("だからちがうんだって!"); 40 } 41 } 42} 43
試しにTMP_InputField でやってみてください、多分TextMeshProUGUIを直で取ると勝手に空白が入ります 動作確認済み
投稿2023/03/29 06:05
総合スコア100
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
0
デバッガは使えますよね。であれば、
string text = inputField.text.Trim();
にブレークポイントを設定し、止まったらステップ実行で一行進めて変数 text に何が代入されているか、その後さらステップ実行していってどうなるか調べてみてはいかがですか?
【追記】
下のコメント欄の 2023/03/29 13:28 の私のコメントで、
Visual Studio 2022 のデバッガでどう見えるかを回答欄に追記しておきます。Windows Forms アプリの場合ですので、質問者さんの Unity アプリの場合とは違うかもしれませんが。
・・・と書いた件です。
(1) アプリをVisual Studio 2022 でデバッグ実行し、テキストボックスに hoge (hoge の前後に 3 文字空白)と入力してブレークポイントで止める。
TextBox の Text プロパティは入力した通りの文字列となっている:
変数 text はこの時点ではまだ null:
(2) ステップ実行で一行進める。変数 text は期待通り "hoge" となる:
(3) ステップ実行でさらに進める。if 文の条件の text == "hoge" は true になるので、以下の行に進む:
質問者さんはここで else の方に進んだと言ってますか? それは C# の文法的にあり得ないです。
投稿2023/03/29 01:24
編集2023/03/29 04:52総合スコア17927
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
2023/03/29 03:36
2023/03/29 04:48
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
解決済
java アルファベット順に並び替え
回答4
クリップ0
更新
2023/06/02
Q&A
解決済
spring bootで新規登録機能を作成したい。
回答1
クリップ0
更新
2023/06/02
Q&A
解決済
「リスコフの置換原則」はインターフェースでも適用されますか?
回答2
クリップ0
更新
2023/05/23
Q&A
解決済
【WPF】カレンダーをカスタマイズし、日付欄にコメント欄を追加したい
回答1
クリップ1
更新
2023/05/30
Q&A
解決済
Uriの中身(存在)チェックのやり方について
回答2
クリップ0
更新
2023/05/26
Q&A
解決済
【JavaSilver】プログラムの処理の流れがわかりません
回答1
クリップ0
更新
2023/06/01
Q&A
解決済
Javaの外部ライブラリが使えない
回答1
クリップ0
更新
2023/05/30
Q&A
解決済
Atcoder ABC301 D Bitmaskが分かりません
回答1
クリップ0
更新
2023/06/01