0

XML ファイルのように見えますが、実際には変数に保存された通常の文字列です。

文字列は次のようになります。

<m:properties>
             <d:user_id m:type="Edm.Int64">37</d:user_id>
             <d:organization_id m:type="Edm.Int64">1</d:organization_id>
             <d:name>Test</d:name>
             <d:password>81dc9bdb52d04dc20036dbd8313ed055</d:password>
             <d:email_id>test1@cs.com</d:email_id>
             <d:user_type_id m:type="Edm.Int32">3</d:user_type_id>
             <d:is_valid m:type="Edm.Boolean">true</d:is_valid>
             <d:registration_date m:type="Edm.DateTime">2012-10-25T11:20:08</d:registration_date>
           </m:properties>

内のテキストを抽出する必要があります:

  1. <d:password> </d:password>
  2. <d:email_id></d:email_id>

<d:password> </d:password>andの内容<d:email_id></d:email_id>は動的です。

javascript文字列処理関数を使用して必要なテキストを抽出する方法は?

4

3 に答える 3

1

投稿したすべての文字列が myCode という名前の変数に格納されていると仮定すると、myCode からパスワードと電子メールを抽出するために必要なものは次のとおりです。

var passwd = myCode.substring(myCode.indexOf("<d:password>")+12,myCode.length-myCode.indexOf("</d:password>"));
var email = myCode.substring(myCode.indexOf("<d:email_id>")+11,myCode.length-myCode.indexOf("</d:email_id>"));
于 2012-11-06T06:36:21.233 に答える
1

この文字列が規則的である (つまり、構造が変化しない) 場合は、正規表現を使用できますが、HTML/XML に非常に近く、規則的ではなく、正規表現と不規則は一緒にはなりません。それらはあまり一緒にならないので、正規表現を提案したとしても、その後の反対票の嵐ですべての担当者を失うことになります。そう...

この文字列が規則的である場合、これは迅速かつクリーンな解決策です。

String name = text.split(">")[6].split("<")[0];
String password = text.split(">")[8].split("<")[0];

ここで、マジック ナンバー 6 と 8 は、入力文字列内のタグのインデックスです。もう少し作業を進めると、マジック ナンバーが完全に失われる可能性がありますが、構造が修正されている場合は、定数で問題なく機能する可能性があります。

または、マジック ナンバーを失い、おそらくよりクリーンになります (ただし、'name>' と 'password>' の長さにはマジック ナンバーを使用します)。

String name = text.substring(text.indexof("name>")+5).split("<")[0];
String password = text.substring(text.indexof("password>")+9).split("<")[0];

これらはどちらも、任意の長さのユーザー名とパスワードで機能します。

PS。もちろん、プログラミングの最初のルールは、決して変更されないコードの外部から来る構造などというものはないということです;)

PPS。私が「任意の長さ」と言うとき、それはもちろんJavaとDalvik VMの制限を受けます;)

于 2012-11-06T07:38:15.097 に答える