一个检索串提取代码示例是JAVA版本的,能不能用JS来写

这个是java版本的,能不能用js来写

public static String extractIndex(String encryptedData) {
    if (encryptedData == null || encryptedData.length() < 4) {
        return null;
    }
    char sepInData = encryptedData.charAt(0);
    if (encryptedData.charAt(encryptedData.length() - 2) != sepInDat a) {
        return null;
    }
    String[] parts = StringUtils.split(encryptedData, sepInData);
    if (sepInData == '$' || sepInData == '#') {
        return parts[0];
    } else {
        return parts[1];
    }
}

例子一:
~AgAAAACRA3kHcalkUwD7G2YJNcBkTGWkPZIligf0ogpMP0q6d1IlAsuFPWSPzuogmIrEya43wGyE8dLzuR22qzEeoy4RE4EseGnOO80mYt2WdgVFmKtBiB+yklyEZyVY~uYDTleHicpenNUyPY41UfeBfLK4afjriNtdwQy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw~0~~
取出来是
uYDTleHicpenNUyPY41UfeBfLK4afjriNtdwQy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw

例子二:
~AgAAAACRA3kFcalkUwDtkqd+GNI5GN6mA3g890YBeWk=~aqs6GLMeT/wk~0~~
取出来是
aqs6GLMeT/wk

例子三:
$Nxr936VS36CN$AgAAAACRA3kGcalkUwDXou5U6engovMJeThVbPO90DE=$0$$
取出来是
Nxr936VS36CN

例子四:
~AgAAAACRA3kIcalkUwBgLsCrWQ4wsUbBS+bRyB1Oaoc+S0r7/UiKLaxhlZz0fNaXnlqMF6nQsogPEvApkCTlqA==~Qy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw~0~~
取出来是
Qy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw

阅读 2.5k
3 个回答
function extractIndex(s) {
    if (typeof s !== "string") return null
    const l = s.length
    if (l < 4) return null
    const c = s[0]
    if (s[l - 2] !== c) return null
    const p = s.split(c)
    return "$#".includes(c) ? p[1] : p [2]
}

不太清除javaStringUtils.split效果是什么(好像过滤了所有空字符串),用js实现了也不知道对不对,但你给的四个例子是合的上的,没有精简,相当于翻译吧。IE不支持字符串索引查找,charAt比较好

// => uYDTleHicpenNUyPY41UfeBfLK4afjriNtdwQy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw
console.log(extractIndex('~AgAAAACRA3kHcalkUwD7G2YJNcBkTGWkPZIligf0ogpMP0q6d1IlAsuFPWSPzuogmIrEya43wGyE8dLzuR22qzEeoy4RE4EseGnOO80mYt2WdgVFmKtBiB+yklyEZyVY~uYDTleHicpenNUyPY41UfeBfLK4afjriNtdwQy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw~0~~'))

// => aqs6GLMeT/wk
console.log(extractIndex('~AgAAAACRA3kFcalkUwDtkqd+GNI5GN6mA3g890YBeWk=~aqs6GLMeT/wk~0~~'))

// => Nxr936VS36CN
console.log(extractIndex('$Nxr936VS36CN$AgAAAACRA3kGcalkUwDXou5U6engovMJeThVbPO90DE=$0$$'))

// => Qy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw
console.log(extractIndex('~AgAAAACRA3kIcalkUwBgLsCrWQ4wsUbBS+bRyB1Oaoc+S0r7/UiKLaxhlZz0fNaXnlqMF6nQsogPEvApkCTlqA==~Qy2hWGeZ8NL0OQ5MPDPxI26cnjHFV0SoljF2fuQ5FBryhr2E9+MCNCajyY5rLnT8hxFAstQ6FAPw~0~~'))

function extractIndex(encryptedData) {
  if (encryptedData == null || encryptedData.length < 4) {
    return null;
  }
  var sepInData = encryptedData.charAt(0);
  if (encryptedData.charAt(encryptedData.length - 2) != sepInData) {
    return null;
  }
  var parts = encryptedData == null || encryptedData === '' ? [] : encryptedData.split(sepInData);
  
  // 好像过滤了所有空字符串
  for(var a = 0; a < parts.length; a++) {
    if(parts[a]==='') {
      parts.splice(a--, 1)
    }
  }

  if (sepInData == '$' || sepInData == '#') {
    return parts[0];
  } else {
    return parts[1];
  }
}

把你的原始串拿过来,输出结果给出来,直接正则表达式去取,更快😂

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题