gpt4 book ai didi

java - 如何使用java获取具有选项值的特定子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:12 26 4
gpt4 key购买 nike

我有一个字符串,我想从这个字符串中获取由选项 (-sn) 标识的密码文件路径。

String s = "msqlsum81pv 0 0 25 25 25 2  -sn D:\workdir\PV_81\config\sum81pv.pwf -C 5000"

上面一行是配置行,可以是-sn-n。请建议如何从上面的字符串中获取 D:\workdir\PV_81\config\sum81pv.pwf 行,或者该字符串可能带有引号。

下面是我的代码,它只检查 -sn 选项,但我想检查 -sn 或 -n 。

if ( s.matches( "^\\s*msql.*$" ) ) 
{
StringTokenizer st = new StringTokenizer( s, " " );
while ( st.hasMoreTokens() )
{
if ( st.nextToken().equals( "-sn" ) )
{
pwf = st.nextToken();
}
}
}

我想使用 StreamTokenizer 而不是 StringTokenizer 类并获取 D:\workdir\PV_81\config\sum81pv.pwf

此路径中可能包含空格。

String s = "msqlsum81pv 0 0 25 25 25 2  -sn D:\workdir\PV_81\config\sum81pv.pwf -C 5000"



if ( s.matches( "^\\s*msql.*$" ) )
{
StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(s));
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF)
{

System.out.println(tokenizer.sval);
}
}

最佳答案

您应该使用正则表达式以更通用的方式检测该选项。如果您想要快速修复,您可以在 if 中使用 OR 运算符,但每次出现新操作时,您的 if 都会增长,这是一个坏主意。

if ( s.matches( "^\\s*msql.*$" ) ) 
{
StringTokenizer st = new StringTokenizer( s, " " );
while ( st.hasMoreTokens() )
{
string token = st.nextToken();
if ( token.equals( "-sn" ) || token.equals("-n" ) )
{
pwf = st.nextToken();
}
}
}

关于java - 如何使用java获取具有选项值的特定子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com