我想知道是否可以读取某个n长度的字符串,从x字符到y字符,而不必将其拆分成更小的部分。
对于AD CN=someName,OU=someGroup,OU=groups,DC=some,DC=domain,DC=com
中的路径,我有以下字符串,我希望能够只读取someName
部分,而不会按=
或{,
进行拆分{1}}首先。我如何实现这一目标?
原因是,我现在不需要进行小组比较:
SearchResult t1 = search.FindOne();
foreach (string s in t1.Properties["memberof"])
{
foreach (string g in groups)
{
if (s.ToLower().Contains(g.ToLower()))
{
// do something
}
}
}
我宁愿将if子句设为equals,但我不想总是将上面的路径/组分成两次。我该怎么做?
答案 0 :(得分:4)
使用IndexOf
和Substring
的简单字符串操作:
string s = "CN=someName,OU=someGroup,OU=groups,DC=some,DC=domain,DC=com";
const string prefix = "CN=";
int start = s.IndexOf(prefix);
if (start >= 0)
{
string value = s.Substring(start + prefix.Length, s.IndexOf(',', start) - prefix.Length);
Console.WriteLine(value);
}
请注意,如果 CN=
条目是行中的最后一个(因为它没有以逗号终止),这个简单示例将失败。您可以先查看第二个IndexOf
来电的返回值来检查。
但在这种情况下,CN=
通常是第一件事。
答案 1 :(得分:1)
如果您正在进行组比较,我会使用System.DirectoryServices.AccountManagement命名空间
PrincipalContext Context = new PrincipalContext(ContextType.Domain, "");
UserPrincipal Usr = UserPrincipal.FindByIdentity(Context, "User");
GroupPrincipal G = GroupPrincipal.FindByIdentity(Context, "Group");
if(Usr.IsMemberOf(G)) {
}
答案 2 :(得分:0)
使用Split
,您可以检查给定键的任何是否等于搜索值。
var val = "CN=someName,OU=someGroup,OU=groups,DC=some,DC=domain,DC=com";
var prefix = "CN";
var searchValue = "someName";
var contains = val.Split(',').Any(value => value.Split('=')[0] == prefix && value.Split('=')[1] == searchValue);
如果检查值是否等于搜索值,您也可以返回该值。
var val = "CN=someName,OU=someGroup,OU=groups,DC=some,DC=domain,DC=com";
var prefix = "CN";
var foundValue = val.Split(',').FirstOrDefault(value => value.Split('=')[0] == prefix)?.Split('=')[1];
我仍然使用Split
,尽管你说你不想使用它,因为我认为它是一个不错的单线。
答案 3 :(得分:0)
您可以使用const string input = "CN=someName,OU=someGroup,OU=groups,DC=some,DC=domain,DC=com";
const string start = "CN=";
const string stop = ",";
int startIndex = input.IndexOf(start, 0);
int stopIndex = input.IndexOf(stop, startIndex);
var extracted = input.Substring(startIndex + start.Length, stopIndex - startIndex - start.Length);
Console.WriteLine(extracted);
找到正确的偏移量,然后使用public class MainActivity extends AppCompatActivity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.mWebView);
mWebView.getSettings().setJavaScriptEnabled(true);
//mWebView.loadUrl("http://edition.cnn.com/");
mWebView.loadUrl("http://10.0.2.2:8080/MissionsWS/myLogin.jsp");
}
}
来阅读您想要的部分。
SELECT COUNT(is_correct), msisdn
FROM [robi_contest].[dbo].[tbl_quiz_reply]
WHERE is_correct = 1 group by msisdn
PS:也许你可以看一下Is there a .NET class that can parse CN= strings out of LDAP?的特殊用例!