Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用特殊字符解析java中的字符串_Java_String_Parsing_Tokenize - Fatal编程技术网

用特殊字符解析java中的字符串

用特殊字符解析java中的字符串,java,string,parsing,tokenize,Java,String,Parsing,Tokenize,我试图以这样一种方式标记一个字符串 示例字符串 Public Static void main(String[args]) 字符串标记器标记化 public static void main String args 但我想用这种方式来标记 public static void main ( String [ args ] ) 表示它还打印字符串移动到标记化的字符public string[]tokenise(string str){ public String[] tokenise(

我试图以这样一种方式标记一个字符串

示例字符串

Public Static void main(String[args])
字符串标记器标记化

public
static
void
main
String
args
但我想用这种方式来标记

public

static

void

main
(
String
[
args
]
)
表示它还打印字符串移动到标记化的字符

public string[]tokenise(string str){
public String[] tokenise(String str){
    String progress = "";
    LinkedList<String> list = new LinkedList<String>();
    for(int c = 0; c < str.length(); c++){
            char ch = str.charAt(c);
            // Skip next char if the current char is an escape character
            if(ch == '\\'){
                c++;
                continue;
            }
            // If current char is to be tokenised, add progress and char to list
            if(ch == ' ' || ch == '(' || ch == ')' || ch == '[' || ch == ']'){
                    if(!progress.equals("")) list.add(progress);
                    list.add(ch+"");
                    progress = "";
            }else{ 
                progress += ch;
            }
    }
    String[] result = new String[list.size()];
    for(int c = 0; c < result.length; c++) result[c] = list.get(c);
    return result;
}
字符串progress=“”; LinkedList=新建LinkedList(); 对于(int c=0;cStringTokenizer
,而是使用regex。我知道了,给我一点时间,我会发布一个答案。您想创建词法分析吗?工作,但仅限于此示例,如果有\或/?会怎么样?谢谢,我添加了对escape ch的支持更好的是,我发布了一个解决方案,它可以处理所有不是字母的东西,想法?不?什么让你感到困惑?我现在重新阅读并理解了它,但是返回每个元素的数组或列表会更有用……哦,好吧,那样的话,我会继续工作。这就是为什么我要求思考的原因!:)
import java.util.Scanner;
import java.util.ArrayList;

public class SOQ17
{

   public Scanner scan;

   public String test;

   public boolean check = true;

   public SOQ17()
   {

      System.out.print("Enter your string.\n");

      scan = new Scanner(System.in);

      test = scan.nextLine();

      for(int i = 0; i < test.length(); i++)
      {

         if((test.charAt(i) >= 'A' && test.charAt(i) <= 'Z') || (test.charAt(i) >= 'a' && test.charAt(i) <= 'z'))
         {

            System.out.print(test.charAt(i) + "");
            check = true;

         }

         else
         {

            if(check)
            {

               System.out.println("");

            }

            System.out.println(test.charAt(i));
            check = false;

         }

      }

   }

   public static void main(String[] args)
   {

      while(true)
      {

         SOQ17 soq = new SOQ17();

      }

   }

}