: empty string0: null string[1][2]Javanull stringnullString""[3]

形式言語における空文字列

編集

2λλΛε使





 : 0

 : Σ

 : 

[4]

プログラミング言語における利用

編集

0使使

JavanullNullPointerException0null
try {
    String str1 = null;
    System.out.println(str1.length()); // NullPointerException
} catch (Exception e) {
    System.out.println(e);
}
String str2 = "";
System.out.println(str2.length()); // 0
System.out.println("" == null); // false
System.out.println("".equals(null)); // false

C言語およびC++の標準ライブラリにおける文字列操作関数および文字列クラスでは、引数にヌルポインタ (NULLあるいはnullptr) が渡された場合の動作は未定義となっており、通例不正な操作とみなされてプログラムが異常終了する原因となる。

一方、Objective-Cではnilを参照する文字列オブジェクトに対する操作(メッセージ送信)は正当なものとして扱われるが、空文字列と等価ではない。

NSString* str1 = nil;
NSLog(@"%lu", (unsigned long)[str1 length]); // 0
NSLog(@"%lu", (unsigned long)str1.length); // 0
NSLog(@"%@", ([str1 isEqualToString: @""] ? @"YES" : @"NO")); // NO







0

0

false

ASCII

使

使



Oracle Database (SQL)


空文字列の表現 プログラミング言語
"" C, C++, Java, Perl, PHP, Python, JavaScript, C#, Visual Basic .NET, Go, Turing, Haskell, Objective-C (C言語形式の文字列の場合), OCaml, Standard ML, Scala, Tcl
'' Perl, PHP, Python, JavaScript, Delphi, Pascal
{'\0'} C, C++, Objective-C (C言語形式の文字列の場合)
std::string()
""s
C++(後者のサフィックスsによるリテラル記法を利用するには、C++14以降に対応した処理系と、あらかじめusing namespace std::literals::string_literals;が必要)
@"" Objective-CNSString型定数オブジェクトの場合)
[NSString string] Objective-CNSStringオブジェクトを新規に作成する場合)
q() Perl
%{} Ruby
""""""
str()
Python
System.String.Empty .NET言語全般(C#のstringおよびVB.NETのStringSystem.Stringへのエイリアス)
String.make 0 '-' OCaml
{} Tcl

空文字列の例

編集

00

C

2使Markdown[5]

関連項目

編集

参考文献

編集
  1. ^ 空文字列(ヌル文字列)とは - 意味をわかりやすく - IT用語辞典 e-Words
  2. ^ Kernighan and Ritchie, C, p.38[要検証]
  3. ^ 21.2 Validating Null and Empty Strings - Java Platform, Enterprise Edition: The Java EE Tutorial (Release 7)
  4. ^ CSE1002 Lecture Notes - Lexicographic
  5. ^ "Basic Syntax". Markdown Guide. 2024年5月9日時点のオリジナルよりアーカイブ。2024年5月9日閲覧