【问题标题】:unable to compare string read from file with java string无法将从文件中读取的字符串与 java 字符串进行比较
【发布时间】:2014-10-31 11:07:56
【问题描述】:

我正在读取一个带有 .lab 扩展名的 java 文件,它基本上是一个带有 utf 字符的文本文件,内容如下:

0.100904 125 SIL 0.392625 125 तुझ्_beg 0.622405 125 या_end 0.623404 125 SIL 0.946096 125 ले_beg 1.120000 125 मळ्_mid 1.362698 125 结束 1.363697 125 SIL

但在程序中我比较如下:

arr[2].equals("SIL")

它不起作用。 整个java代码如下:

public class SyllableCount 
{

static final File labDir = new File("/media/sda6/tts/programs/MyWork/silence_handling/labs_4");
static final HashMap<String, ArrayList<Float>> terminalSyllMap = new HashMap<String, ArrayList<Float>> ();

public void accessFilesForFolder(final File labDir) 
{
    System.out.println("in method");
    for (final File labFile : labDir.listFiles()) 
    {
        if (labFile.isDirectory()) 
        {
            accessFilesForFolder(labFile); //for recursive operation
        } else 
        {

            System.out.println(labFile.getName());
            BufferedReader br = null;
            String[] syllable = new String[100];//just an example-you have to initialize it big enough to hold all lines
            float[] timeFrame = new float [100];

            String sCurrentLine;
            try 
            {
                //br = new BufferedReader(new FileReader(labFile));
                br = new BufferedReader(new InputStreamReader(new FileInputStream(labFile), "UTF8"));


                int lineNo=0;
                while ((sCurrentLine = br.readLine()) != null) 
                {
                    String[] arr = sCurrentLine.split(" ");
                    //for the first line it'll print

                    if(arr[0].equalsIgnoreCase("#"))
                    {
                        lineNo++;
                        continue;
                    }


                        //entering them into separate arrays
                        timeFrame[lineNo] = Float.parseFloat(arr[0]);
                        syllable[lineNo] = arr[2];

                        lineNo++;

                }

                br.close(); 
                populateMaps(timeFrame, syllable, lineNo);

                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

        }   
      }
    System.out.println(terminalSyllMap);
}

public void populateMaps(float[] timeFrame,String[] syllable, int lineNo) throws Exception
{



    String syllval;
    float duration;
    ArrayList<Float> timeframeArray;
    for(int i=0; i<lineNo-1; i++)
    {

        //System.out.println(syllable[i+1]);
        if (syllable[i+1].equals("SIL"))
        {
            syllval = syllable[i];
            duration = timeFrame[i+1] - timeFrame[i]; 
            if(terminalSyllMap.containsKey(syllval))
            {
                timeframeArray = terminalSyllMap.get(syllval);
            }
            else
            {
                timeframeArray = new ArrayList<Float>();
            }
            timeframeArray.add(duration);
            terminalSyllMap.put(syllval, timeframeArray);
        }
    }
}

public static void main(String[] args) 
{
    //
    SyllableCount run = new SyllableCount();
    run.accessFilesForFolder(labDir);

}





 }

任何帮助将不胜感激。

【问题讨论】:

标签: java string utf-8 file-handling


【解决方案1】:

尝试:

final String[] arr = sCurrentLine.split("\\s+");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 2017-02-20
    • 2010-10-06
    • 1970-01-01
    • 2012-08-31
    • 2014-04-12
    • 2014-11-08
    • 2020-06-08
    相关资源
    最近更新 更多