お世話になります♪

たとえばこういうStringの文字列があるとします。
String s = "私は Javaを 勉強 しています。";
これを下記のようなイメージでString[]配列に変換したいのですが、
{"私は","Javaを","勉強","しています。"};

何かいい方法はないでしょうか?
ヒントをください!

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

java.util.StringTokenizerで区切り文字を半角スペースで使用して、


hasMoreTokens()をwhileで回しながらそのループ中で配列に投入してはどうですか?
    • good
    • 1
この回答へのお礼

サンプルを見る前にある程度自分で組むことが出来ました!
ありがとうございます!

お礼日時:2006/11/06 17:51

ご参考までに



import java.util.*;
class Hello022 {
public static void main(String args[]){
String[] str = new String[4];
int i = 0;
String s = "私は Javaを 勉強 しています。";
StringTokenizer st = new StringTokenizer(s ," ");
while(st.hasMoreTokens()){
str[i] = st.nextToken();
i++;
}
for(int j=0;j<str.length;j++){
System.out.println(str[j]);
}
}
}
    • good
    • 2
この回答へのお礼

完璧なサンプルありがとうございます!

お礼日時:2006/11/06 17:47

substringを使うならば少し苦しいですが


class Bunkatsu {
public static void main(String[] args){
int i=0;
int j=0;
int k[]=new int[10];
String str="私は Javaを 勉強 しています。";
String sstr[]=new String[10];

k[i]=0;
i=i+1;
str=" "+str;

while(j<str.length()){

if(str.substring(j,j+1).equals(" ")||str.substring(j,j+1).equals("。")){
k[i]=j+1;
i=i+1;
}
j=j+1;
}
for(int l=0;l<i-1;l++){
sstr[l]=str.substring(k[l],k[l+1]);
System.out.println(sstr[l]);
}
}
}
    • good
    • 0
この回答へのお礼

こういうやり方もあるんですね!
ありがとうございます!

お礼日時:2006/11/06 17:48

Java1.4以降かつ正規表現が理解できるならStringクラスのsplitメソッドでもOK。

    • good
    • 0
この回答へのお礼

正規表現はまだ理解できていません・・・。
今度挑戦してみます!
ありがとうございました!

お礼日時:2006/11/06 17:49

区切りたい文字と文字の間に半角スペースが入るというのを前提に記述します。



クラスとしては、StringTokenizerクラスが使えると思います。
サンプルソースとしては…

StringTokenizer strToken = new StringTokenizer( "私は Javaを 勉強 しています。", " " );
int intMax = strToken.countTokens();
String[] strPara = new String[ intMax ];
for( int i = 0; i < intMax; i++ ) {
strPara[ i ] = strToken.nextToken();
}

これで、
strPara[ 0 ] = "私は"
strPara[ 1 ] = "Javaを"
strPara[ 2 ] = "勉強"
strPara[ 3 ] = "しています。"

が、格納されると思います。
※他に良い案があるかもしれませんが…(汗)
    • good
    • 0
この回答へのお礼

わかりやすいサンプルありがとうございました!

お礼日時:2006/11/06 17:50

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QVBのFunctionで、配列を引数や返却値にできますか?

配列の要素をソートするFunction を作成しようとしているのですが、
ソート対象配列を引数にして、返却値がソートされた配列になるように
したいと思ったのですが、その方法がわかりません。
それとも、引数に配列を入れることは不可能なのでしょうか。

Aベストアンサー

こんな感じです。配列をクイックソートしています。
配列を引数にするには、
Function hoge( Array()) As Long

End Function
のようにします

VBでは通常は「参照渡し」で引数を渡しますので、hoge()中でArray()の内容を書き換えると、呼び出しもとの関数中でも書き換え後の値を使用することが出来ます。

下記で、「ByRef Values()」としているのは、明示的に参照渡しである事を指定することにより、これを読むプログラマに対して「呼び出すとココの値を変更するねんで」ってことを伝えているわけです。



Option Explicit

Sub Main()
  Dim i As Long
  Dim Values() As Long
  
  '配列を初期化する
  ReDim Values(255) As Long
  For i = 0 To 255
    Values(i) = Rnd * 256
  Next i
  
  '配列をソートする
  Call QuickSortLong(Values())
End Sub

Public Sub QuickSortLong(ByRef Values() As Long, Optional StPos As Long, Optional EdPos As Long)

  Dim Ct As Long    'カウンタ
  Dim LastPos As Long  '配列最終番号
  Dim Buffer As Long   'バッファ
  
  '引数省略時の初期値
  If IsMissing(StPos) Then
    StPos = LBound(Values, 1)
  End If
  If IsMissing(EdPos) Then
    StPos = UBound(Values, 1)
  End If

  '終了番号が開始番号以下のときは処理を行わない
  If StPos >= EdPos Then
    Exit Sub
  End If

  '最初の値をバッファに格納
  Buffer = Values(StPos)
  '各バッファの値をスワップする
  '真ん中にある配列の値を最初の配列に代入する
  Values(StPos) = Values((StPos + EdPos) / 2)
  'バッファに格納された値を真ん中の配列に代入する
  Values((StPos + EdPos) / 2) = Buffer

  LastPos = StPos

  For Ct = StPos + 1 To EdPos
    If Values(Ct) < Values(StPos) Then
      LastPos = LastPos + 1
      '各バッファの値をスワップ
      Buffer = Values(LastPos)
      Values(LastPos) = Values(Ct)
      Values(Ct) = Buffer
    End If
  Next Ct

  '各バッファの値をスワップ
  Buffer = Values(StPos)
  Values(StPos) = Values(LastPos)
  Values(LastPos) = Buffer
  
  '再起呼び出し
  Call QuickSortLong(Values, StPos, LastPos - 1)
  Call QuickSortLong(Values, LastPos + 1, EdPos)
End Sub

こんな感じです。配列をクイックソートしています。
配列を引数にするには、
Function hoge( Array()) As Long

End Function
のようにします

VBでは通常は「参照渡し」で引数を渡しますので、hoge()中でArray()の内容を書き換えると、呼び出しもとの関数中でも書き換え後の値を使用することが出来ます。

下記で、「ByRef Values()」としているのは、明示的に参照渡しである事を指定することにより、これを読むプログラマに対して「呼び出すとココの値を変更するねんで」ってことを伝えているわけです...続きを読む

QString a = "a"; と String b = new String ("b"); の違い

String a = "a";
String b = new String ("b");

お伺いしたいのですが、
b は String のインスタンスを作ってると思いますが、
a はどんなことをしてるのでしょうか?

Aベストアンサー

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その初期化に使った無名のStringインスタンスの3つがメモリ上に存在することになります。
if(b1 != b2) System.out.print("b1とは違うインスタンス");
の結果でもわかると思います。

したがって、
String b = new String ("b"); というのは、Integerに例えると
Integer i = new Integer(new Integer(1)); という処理を
していることになり、ひとつ無駄なインスタンス生成となります。

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その...続きを読む

QVB.NET: 型が配列のときの戻り値は?

仮に戻す値が無い場合は、私は Nothing かなと思います。
しかし、プログラマでもない素人。
VB.NET の学習も一カ月未満の超初学者。
もっとも、基本的なこととは思いますが答えが知りたいです。

「そうじゃない!ByRef を使う方が望ましい!」

という考え方もありかな!とも思っています。

Aベストアンサー

Functionの話ですね。
たった一つの答えというものはおそらく無くて、その戻り値を受け取る側でどうしているか、に影響されてくるのではないでしょうか。

例えば、そのメソッドの処理内でOKパターンではないと判別したとき、Nothingを返すことにより、待ち受ける側でNothingかどうかにより以後の処理を振り分けることが出来ます。
ただ、この場合は空の配列を返してもいいかもしれません。

もちろん、値を返さない場合があるという状況を作りたくないのであれば、FunctionではなくSubとして、ByRefの引数を使うという手もなくはないかも知れません。
この場合、事前に引数として用意しておかなければなりませんが。

大事なことかなと思うので2回言いますが、結局は「どうしたいか」が答えを決めると思います。

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

QArrayListの初期値に二次元配列を設定したい(VB2005)

下記は、aryhogeにTextBoxオブジェクトを格納する処理です。

----------------------------------------
'a)
Dim hoge()() As TextBox = _
      {New TextBox() {txta01, txtb01, txtc01}, _
      New TextBox() {txta02, txtb02, txtc02}, _
      New TextBox() {txta03, txtb03, txtc03}}

Dim aryhoge As New ArrayList    'b)

aryhoge.Add(hoge(0))
aryhoge.Add(hoge(1))
aryhoge.Add(hoge(2))
----------------------------------------

(a)を(b)の初期値として設定するにはどのようにすればよいか、ということが質問内容です。

試しに(b)の部分を以下のようにしてみましたが、「1次元配列の値を変換できない」とのエラーが出ました。
Dim aryhoge As New ArrayList(New TextBox() {hoge(0), hoge(1), hoge(2)})

どうぞよろしくお願い致します。

下記は、aryhogeにTextBoxオブジェクトを格納する処理です。

----------------------------------------
'a)
Dim hoge()() As TextBox = _
      {New TextBox() {txta01, txtb01, txtc01}, _
      New TextBox() {txta02, txtb02, txtc02}, _
      New TextBox() {txta03, txtb03, txtc03}}

Dim aryhoge As New ArrayList    'b)

aryhoge.Add(hoge(0))
aryhoge.Add(hoge(1))
aryhoge.Add(hoge(2))
----------------------------------------

(a)を(b)の初期値として...続きを読む

Aベストアンサー

Dim aryhoge As New ArrayList(hoge)

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。

QVB6でやると構造体の配列になる変数をVB2008では何で作ればいいか

VB6でプログラムを作っていたときは
値のセットが配列になるとき
構造体を動的配列で宣言してデータを足して作りました。

VB2008で開発をすることになり
同じようなことをしたいのですが
もっと便利なやり方が登場したりするのでしょうか?
クラスで挑戦したのですが動的配列はできないようでした。

Aベストアンサー

#書き連ねてたらやたら長くなってしまったので必要と思うところだけ抜粋して読んでくださいませ。

> できれば下記のようにしたかったので
> 同じようなことができないでしょうか?

■構造体+配列
Public Structure MainGroup
  Public ID As Integer
  Public SubGroups As SubGroup()
End Structure

Public Structure SubGroup
  Public ID As Integer
  Public Value1 As Integer
  Public Value2 As Integer
  Public Sub New(ByVal ID As Integer, ByVal Value1 As Integer, ByVal Value2 As Integer)
    Me.ID = ID : Me.Value1 = Value1 : Me.Value2 = Value2
  End Sub
End Structure

Public Class Program
  Public Shared Sub Main()
    Dim DataArray As MainGroup() = {}
    Array.Resize(DataArray, 3)

    With DataArray(0)
      .ID = 1
      Array.Resize(.SubGroups, 4)
      .SubGroups(0) = New SubGroup(101, 123, 456)
      .SubGroups(1) = New SubGroup(102, 234, 567)
      ' (略)
    End With

    With DataArray(1)
      ' (略)
    End With
  End Sub
End Class

■クラス+コレクション
Public Class MainGroup
  Public ID As Integer
  Public SubGroup As New System.Collections.Generic.List(Of SubGroup)
End Class

Public Class SubGroup
  Public ID As Integer
  Public Value1 As Integer
  Public Value2 As Integer
  Public Sub New(ByVal ID As Integer, ByVal Value1 As Integer, ByVal Value2 As Integer)
    Me.ID = ID : Me.Value1 = Value1 : Me.Value2 = Value2
  End Sub
End Class

Public Class Program
  Public Shared Sub Main()
    Dim DataList As New System.Collections.Generic.List(Of MainGroup)
    Dim NewMain As MainGroup

    NewMain = New MainGroup
    NewMain.ID = 1
    NewMain.SubGroup.Add(New SubGroup(101, 123, 456))
    NewMain.SubGroup.Add(New SubGroup(102, 234, 567))
    ' (略)
    DataList.Add(NewMain)
  End Sub
End Class

配列+クラスはNULL参照を発生させる可能性がある点で相性がよくありません。コレクション+構造体は、#2で挙げたようにデータ書き換えの手間がかかり、やはり相性はよくありません。
配列は要素数の変動に対してパフォーマンスが悪く、細かく増減させるには不向きです。コレクションは増減することを前提としている点や、削除した箇所を詰めたり途中に挿入したりが容易な点で優れています。
クラス or 構造体、配列 or コレクション をどう組み合わせるかはこれらのほか、ユーザビリティ・保守性・整合性・パフォーマンスなどと共に天秤にかけることになるでしょう。状況にあわせてうまく使い分けてください。


> addでどんどん追加して全体をループさせずに小項目IDを取得する方法

小項目IDがユニークであれば、リストコレクションではなく辞書コレクションを使うことでIDからクラスを取得できるようになります。クラスが保持しているデータをキーに使う場合は、コレクションを継承したクラスを作り、AddをShadowsで置き換えたほうがコーディングミスを防ぐことが出来ます。

■クラス+コレクションクラス
Public Class Group
  Public MainID As Integer
  Public SubID As Integer
  Public Value1 As Integer
  Public Value2 As Integer
End Class

Public Class GroupCollection : Inherits System.Collections.Generic.Dictionary(Of Integer, Group)
  Public Shadows Sub Add(ByVal Item As Group)
    MyBase.Add(Item.SubID, Item)
  End Sub
End Class

Public Class Program
  Public Shared Sub Main()
    Dim DataDict As New GroupCollection
    Dim NewGroup As New Group
    NewGroup.MainID = 1
    NewGroup.SubID = 101
    NewGroup.Value1 = 123
    NewGroup.Value2 = 234

    DataDict.Add(NewGroup)

    Console.WriteLine(DataDict.Item(101).Value2) ' 出力 234
  End Sub
End Class

#書き連ねてたらやたら長くなってしまったので必要と思うところだけ抜粋して読んでくださいませ。

> できれば下記のようにしたかったので
> 同じようなことができないでしょうか?

■構造体+配列
Public Structure MainGroup
  Public ID As Integer
  Public SubGroups As SubGroup()
End Structure

Public Structure SubGroup
  Public ID As Integer
  Public Value1 As Integer
  Public Value2 As Integer
  Public Sub New(ByVal ID As Integer, ByVal Value1 As Integer, B...続きを読む

QA a = new A(){}; の構文の意味が分からない。

下記サイトのコードを読んでいて、

ResponseListener listener = new ResponseListener() {
//略
};

という書き方があったのですが、どういう意味になるのでしょうか?
インスタンスの作り方は単に

A a = new A();

だと思うのですが…。

http://www.snmp4j.org/doc/org/snmp4j/Snmp.html

Aベストアンサー

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけてもいいわけ。
そんな場合、わざわざクラスを1つ作る必要なくて
その場でちょちょいとやってしまうことができるのよ。
それが無名クラスっていう実装方法よ。

http://www.javaroad.jp/java_class15.htm

FileFilterやCompare、Runnableなんかで
他のクラスで再利用しないときは良くやるわ。

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけても...続きを読む

QVBスクリプトの配列数字をJAVAスクリプトで使うには

表題があまり良くないですが
VBSでページを作っています

その中で
ページ閲覧者がテキストボックスに値を記入したときに
JAVAスクリプトのonchangeでJAVAスクリプトへ飛んで

VBスクリプトで定義した配列の値を代入したいのですが
うまくいきません
飛んでいった先のコードが
<script type="text/javascript">
<!--
//値の代入
function hoge(FRM){
FRM.hoge1.value=ここにVBスクリプトの配列
}
// -->
</script>
これだけのことなのですが
配列を直接数字で書くと
FRM.hoge1.value=<%=atai(1)%>
hoge1にはきちんと値が入力されます

しかし この1と言う数字の所に
FRM.hoge2.value の値をいれてやろうとすると
イメージとしては
FRM.hoge1.value=<%=atai(FRM.hoge2.value )%>
なんですが、これではエラーがでます(当然ですよね)
色々"" でくくったり & や + ()などの
組み合わせでやってもうまくいきません

どなたか正しい構文か方法を教えてください
よろしくお願いします


 

表題があまり良くないですが
VBSでページを作っています

その中で
ページ閲覧者がテキストボックスに値を記入したときに
JAVAスクリプトのonchangeでJAVAスクリプトへ飛んで

VBスクリプトで定義した配列の値を代入したいのですが
うまくいきません
飛んでいった先のコードが
<script type="text/javascript">
<!--
//値の代入
function hoge(FRM){
FRM.hoge1.value=ここにVBスクリプトの配列
}
// -->
</script>
これだけのことなのですが
配列を直接数字で書くと
FRM.hoge1.v...続きを読む

Aベストアンサー

何かを勘違いされていると思います。

umadura4747さんが言われている、VBScriptの配列と言うのは、サーバー上での変数を指し、JavaScriptの値と言うのは、クライアント上の変数を指しています。
つまり、次元が違うため実行できないのです。

解決方法としては、

1. VBScriptという配列がサーバー上でしか定義できない場合
 以下のようなJavaScriptのソースを生成するために、ASPコードを追加してあげる。

 var a = new Array("a", "b", "c");

2. クライアント側でも配列が定義できる場合
 先ほどと同じコードをあらかじめJavascriptで定義しておく

ASPとは、サーバー上で動的にHTMLソースを生成することを目的としています。
まずは、やりたいことをHTMLソースで記述し、それを生成するためには、どういったASPコードを書くかを考えてください。

QJavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?


YOUTUBE日本語版
http://jp.youtube.com/
のHTMLソースを見ていたら、



<script type="text/javascript">
    window.google={kHL:"ja"};
</script>


という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか?


教えていただければ幸いです。

Aベストアンサー

これは、window.googleに'kHL'というキー(値は'ja')を持つ連想配列を
作成しています。

JavaScriptでの連想配列は

var 変数名 = {
キー : '値',
キー : '値',
:,
キー : '値'
};

というような感じで作成します。
キーはダブルクォートまたはシングルクォートで囲まなくても
いいようです。

参考URL:http://javascriptist.net/docs/basic_hash.html,http://www.openspc2.org/JavaScript/kouza2007/array/hash/index.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング