Ruby 提取部分字符串
Ruby extract part of string
我有以下字符串...
CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com
我需要提取 KendallLDAPTEST Weihe
换句话说,我需要提取第一个 =
和第一个 ,
之间的所有字符串数据
您可以简单地在 ,
上使用 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"
这有点天真,因为如果您的任何数据包含转义的 =
或 ,
字符,它将无法工作。
已测试,有效
使用正则表达式:
str = "CN=KendallLDAPTESTWeihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"
str[/\=(.*?),/,1]
对于任何重复使用此内容的人,请将 here
的两个实例替换为您想要在其间查找文本的字符:
[/\here(.*?)here/,1]
如果您尝试捕获的文本总是出现在同一索引中,您可以使用此方法:
the_text[3...22]
我会使用:
str = "CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"
str[/=([^,]+)/, 1] # => "KendallLDAPTEST Weihe"
默认情况下,正则表达式会找到第一个匹配项然后停止。这只是找到第一个 =
,然后捕获所有不是 ,
的字符,直到第一个 ','
和 returns 它。
我有以下字符串...
CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com
我需要提取 KendallLDAPTEST Weihe
换句话说,我需要提取第一个 =
和第一个 ,
您可以简单地在 ,
上使用 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"
这有点天真,因为如果您的任何数据包含转义的 =
或 ,
字符,它将无法工作。
已测试,有效
使用正则表达式:
str = "CN=KendallLDAPTESTWeihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"
str[/\=(.*?),/,1]
对于任何重复使用此内容的人,请将 here
的两个实例替换为您想要在其间查找文本的字符:
[/\here(.*?)here/,1]
如果您尝试捕获的文本总是出现在同一索引中,您可以使用此方法:
the_text[3...22]
我会使用:
str = "CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"
str[/=([^,]+)/, 1] # => "KendallLDAPTEST Weihe"
默认情况下,正则表达式会找到第一个匹配项然后停止。这只是找到第一个 =
,然后捕获所有不是 ,
的字符,直到第一个 ','
和 returns 它。