Ruby提取部分字符串

时间:2015-07-16 19:13:01

标签: ruby-on-rails ruby string extract delimiter

我有以下字符串......

CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com

我需要提取KendallLDAPTEST Weihe

换句话说,我需要在第一个=和第一个,之间提取所有字符串数据

4 个答案:

答案 0 :(得分:5)

经过测试,有效

使用正则表达式:

str = "CN=KendallLDAPTESTWeihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"

str[/\=(.*?),/,1]

对于重新使用此功能的任何人,请将here的两个实例替换为您要在其间找到文本的字符:

[/\here(.*?)here/,1]

答案 1 :(得分:1)

您可以使用split上的,简单地拆分字符串,首先生成一对key=value对,然后在=上拆分这些对。

str = 'CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com'

pairs = str.split(',').map { |pair| pair.split('=') }
# => [["CN", "KendallLDAPTEST Weihe"], ["OU", "CORPUSERS"], ["OU", "CORP"], ["DC", "int"], ["DC", "appriss"], ["DC", "com"]]

pairs.first[1]
# => "KendallLDAPTEST Weihe"

这有点天真,因为如果您的任何数据包含转义的=,字符,它就无法使用。

答案 2 :(得分:1)

我使用:

var _ajax = document.createElement('iron-ajax');
    _ajax.url = 'url';
    _ajax.headers = {"Authorization": "auth (number)"};
    _ajax.method = 'GET';
    _ajax.handleAs = 'json';
    _ajax.debounceDuration = 300;
    _ajax.auto = true;

默认情况下,正则表达式将找到第一个匹配然后停止。这只是找到第一个str = "CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com" str[/=([^,]+)/, 1] # => "KendallLDAPTEST Weihe" ,然后在第一个=之前捕获所有不是,的字符并将其返回。

答案 3 :(得分:0)

如果您要捕获的文本始终显示在同一索引上,则可以使用此文件:

the_text[3...22]