我可以用一个数字作为起点,用逗号作为终点来分隔一个字符串吗?

Can I separate a string using a a number as the starting point and a comma as the ending point?

提问人:CMRandall 提问时间:4/21/2023 最后编辑:CMRandall 更新时间:4/21/2023 访问量:49

问:

下面是一个示例字符串: CN=John Doe,OU=IT,OU=管理支持服务,OU=部门,OU=客户,DC=公司,DC=com

我只需要从这个字符串中获取名字。在这种情况下,名称是 John Doe。我无法对许多字符进行硬编码,因为那里的名称长度可能会有所不同。

基本上我需要选择 CN= 之后的字符串,然后在第一个逗号处结束它。

第一个数字始终可以是 3 个字符,因为 CN= 始终存在。我可以使用第一个逗号作为终点吗?

我正在尝试做这样的事情。

let name = reports[i].mgrdn; let result = name.split(3, “,”)

任何帮助将不胜感激。甚至只是关于使用什么方法的建议。

JavaScript 字符串 拆分 切片

评论

1赞 Andy 4/21/2023
你已经标记了,所以你为什么不使用它呢?split
0赞 CMRandall 4/21/2023
我正在尝试几种不同的选择,看看什么会起作用。我只是碰巧在我复制粘贴的那块中切片。不过编辑了问题。

答:

0赞 Noex98 4/21/2023 #1

为此,可以使用 indexOf 方法,然后切片

function extractFirstName(str) {
  let startIndex = str.indexOf("CN=") + 3;
  let endIndex = str.indexOf(",", startIndex);
  if (startIndex < 0 || endIndex < 0) {
    return null;
  }
  let firstName = str.slice(startIndex, endIndex);
  return firstName;
}

// Example
let name = "CN=John Doe,OU=IT,OU=Management Support Services,OU=Divisions,OU=Accounts,DC=company,DC=com";
let firstName = extractFirstName(name);
console.log(firstName);

1赞 Hogan 4/21/2023 #2

这将为您提供所需的东西。

 result = name.split(',')[0].split('=')[1];

当然,您可能也应该验证格式是否符合预期。

正如 @freedomn-m 所说......

循序渐进:

  • 取名称,用逗号拆分,取第一个条目(第一个逗号之前的所有文本),
  • 拆分 on = 并取相等之后的所有文本(来自第一个逗号之前的文本)

评论

0赞 CMRandall 4/21/2023
效果很好!这到底是怎么回事呢?
1赞 freedomn-m 4/21/2023
循序渐进:取名称,在逗号上拆分,取第一个条目(第一个逗号之前的所有文本),拆分并取等号之后的所有文本(从第一个逗号之前的文本)=
0赞 Marc 4/21/2023 #3

如果要使用正则表达式:

let regex = new RegExp("\=(.*?)\,");
let input = "CN=John Doe,OU=IT,OU=Management Support Services,OU=Divisions,OU=Accounts,DC=company,DC=com"

let [_, name] = input.match(regex)

console.log("Name:", name);

https://regex101.com/r/i4p0Ks/1

0赞 epascarello 4/21/2023 #4

如果您需要获取的不仅仅是第一个参数,您可以将其转换为查询参数。

const str = 'CN=John Doe,OU=IT,OU=Management Support Services,OU=Divisions,OU=Accounts,DC=company,DC=com';
const searchParams = new URLSearchParams(str.replace(/,/g,"&"));
console.log('CN', searchParams.get("CN"));
console.log('OU', searchParams.getAll("OU"));
console.log('DC', searchParams.getAll("DC"));