2

演算子の配列を調べて、演算子の 1 つが文字列にあるかどうかを確認しようとしています。

例えば:

String[] OPERATORS    = { "<", "<=", ... };
String line = "a <= b < c ";

演算子が文字列に含まれているかどうかを確認するループを実行するにはどうすればよいですか?

また、「<」が「 < =」の文字列にあることが私の方法で見つかったとします。

ただし、実際の文字列「 <= 」を探しています。それを会計処理するにはどうすればよいでしょうか。

4

4 に答える 4

0

これは、演算子の両側にスペースがある場合にのみ機能します。

for (String operator : OPERATORS) {
    Matcher m = Pattern.compile("\\s\\" + operator + "\\s").matcher(line);
    while (m.find())
         System.out.println((m.start() + 1) + " : " + m.group());
}

これは、演算子の特別な順序付けなしで機能します。

于 2014-03-26T17:27:55.293 に答える
0

これが私がすることです:

for(String operator : OPERATORS)
{
    if(Pattern.compile("[\\s\\w]" + operator + "[\\s\\w]").matcher(line).find())
    {
        System.out.println(operator + " found in " + line);
    }
}

<で演算子が見つからないという点で、正しく機能するはず<=です。

完全なコード:

import java.util.regex.Pattern;

public class Test
{
    public static void main(String[] args)
    {
        String[] OPERATORS = { "<", "<="};
        String line = "a <= b < c ";

        for(String operator : OPERATORS)
        {
            if(Pattern.compile("[\\s\\w]" + operator + "[\\s\\w]").matcher(line).find())
            {
                System.out.println(operator + " found in " + line);
            }
        }
    }
}
于 2014-03-26T17:00:48.297 に答える