使用javascript在两个单词之间获取文本

时间:2012-11-06 06:24:57

标签: javascript android string titanium

我有一个字符串,它看起来像一个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>
  3. <d:password> </d:password><d:email_id></d:email_id>的内容是动态的。

    如何使用javascript字符串处理函数来提取所需的文本?

3 个答案:

答案 0 :(得分: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>"));

答案 1 :(得分:1)

IF 这个字符串是常规的(即它的结构永远不会改变),那么你可以使用正则表达式,但它非常接近HTML / XML,这是不规则的和正则表达式和不规则的不要在一起。如果我甚至建议使用正则表达式,那么他们就不会聚集在一起,我会在随后的风暴风暴中失去我所有的代表。所以......

IF 这个字符串是常规的,那么这是一个快速和干净的可能解决方案:

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

这里,幻数6和8是输入字符串中标签的索引。通过稍微进一步的工作,你可以完全失去神奇的数字,但如果结构是固定的,常量可能对他们有效。

或者,丢失神奇的数字,也许更干净(尽管使用魔术数字代表'name&gt;'和'password&gt;')。

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的限制;)

答案 2 :(得分:0)

一个非常简单的答案,无需太在乎数事:

var password = text.split("<d:password>")[1].split("</d:password>")[0];
var email = text.split("<d:email_id>")[1].split("</d:email_id>")[0];

在这里,您唯一必须确保的是您没有多个相同的标签。如果存在多个索引,则第一个索引会说出您想要哪个出现。另一个保持为0。