提问人:CMRandall 提问时间:4/21/2023 最后编辑:CMRandall 更新时间:4/21/2023 访问量:49
我可以用一个数字作为起点,用逗号作为终点来分隔一个字符串吗?
Can I separate a string using a a number as the starting point and a comma as the ending point?
问:
下面是一个示例字符串: 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, “,”)
任何帮助将不胜感激。甚至只是关于使用什么方法的建议。
答:
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"));
评论
split