Unitty3d C# String Split
Unity3D 2012. 10. 11. 16:33반응형
string a = "文字列A"; string b; b = a.Substring(「開始位置」,「取り出す文字数」);開始位置は0から始まる
全角も1文字として数えられます
b = a.Substring(0, 2); //先頭から2文字→文字 b = a.Substring(1, 2); //2文字目から3文字→字列 b = a.Substring(1); //3文字目以降全部→字列A
●特定の文字列で分割
string a = "文字列A\n文字列B"; string[] b; string c; b = a.Split("\n"[0]); //改行コードで分割 c = b[0]; //cには『文字列A』が入る
区切り文字を複数にしたい場合は,配列にすれば可能です
string a = "文字列A\n文字列B"; string[] b; string c; string[] KUGIRI = {"\r", "\n"}; //データの区切り文字 b = a.Split(KUGIRI); //KUGIRI変数内の各文字で分割 c = b[0]; //cには『文字列A』が入る
○空白だけの項目は削除したい場合
Splitには実は第2引数があり,そこに System.StringSplitOptions.RemoveEmptyEntriesを指定すると,分割した後中身の無い変数は削除されます
string a = "文字列A\n\n\n文字列B"; //間に改行が3つある string[] b; string c; b = a.Split("\n"[0], System.StringSplitOptions.RemoveEmptyEntries); //改行コードで分割。空欄は削除する//b[0]には『文字列A』
//b[1]には『文字列B』
//が入る
●文字列比較
原則として ==で比較しますstring a="文字列A"; if(a == "文字列A"){ //一致した }else{ //一致しなかった }・うまく比較できない場合はEqualsメソッドを使う
string a="文字列A"; if(a.Equals("文字列A")){ //一致した }else{ //一致しなかった }・宣言をしただけの変数との比較はできません
string a; if (a == null) { //x }↓こういうエラーが出ます
error CS0165: Use of unassigned local variable `a'
if文を使用する変数は,必ず定義されていなければなりません
されない場合がある。というのもダメです
string a; int b=1; if (b == 1) { a = "初期化"; } if (a == null) { Debug.Log("true"); }※bが1でない場合が発生するかも知れないのでエラーになります
・nullの状態
何も入っていない状態が nullなのでは無くて,nullも代入できるという事です
string a=null;
●数値を文字列に代入
・整数int a = 123; string b; b = "" + a;
・少数
float a = 123.45f; string b; b = "" + a;
●文字を数値に代入
・整数の場合string a = "123"; int b; try{ b = int.Parse(a); }catch{ //エラー時:文字列が整数で無い時(少数の時もエラーになる) }変換できない文字列の場合は以下のエラーになります
NullReferenceException: Object reference not set to an instance of an object
・少数の場合
string a = "123.45"; float b; try{ b = float.Parse(a); }catch{ //エラー時:文字列が少数で無い時 }
○例外を発生させたくない場合はTryParseメソッドを使う
・整数の場合
string a = "123"; int b; if(int.TryParse(a, out b)){ //正常の時 //bに結果の123が入っている }else{ //エラー時:文字列が整数で無い時(少数の時もエラーになる) //bには常に0が入っている }
・少数の場合
string a = "123.45"; float b; if(float.TryParse(a, out b)){ //正常の時 //bに結果の123.45が入っている }else{ //エラー時:文字列が少数で無い時 //bには常に0が入っている }
●文字列検索
string a = "文字列A\n文字列B"; int b; b = a.IndexOf('\n');
先頭を 0とした,最初に発見した文字数が入ります
この場合は b=4です
文字が発見できなかった場合は,-1が入ります
if (a.IndexOf('\n') == -1) { //文字列が無かった } else { //文字列があった }
●switch~case文
string word="春";switch(word){
case "春":
case "夏":
case "秋":
case "冬":
//春夏秋冬のどれかだった場合
break;
default:
//それ以外
break; //省略不可
}
※最後のbreakは省略できません。書き忘れると以下のエラーが出ます
error CS0163: Control cannot fall through from one case label to another
●デバッグ出力
string debug = "デバッグ文字列"; Debug.Log(debug);※Consoleウィンドウは,メニューの Window→Consoleで表示されます
반응형
'Unity3D' 카테고리의 다른 글
NGUI 유니티 3.5.5 Color32에러 (0) | 2012.10.12 |
---|---|
How to turn a String to an Int? (0) | 2012.10.11 |
Mono: AOT failed to load AOT module /Applications/Unity/Unity.app/Contents/Frameworks/MAssets/Test.js(9,27): BCE0048: Type 'Object' does not support slicing. (0) | 2012.10.08 |
NGUI Create Sprite and set Atlas runtime (0) | 2012.09.28 |
NGUI 한글 멘붕 (2) | 2012.09.27 |