随机替换字符串

1:先取到文件的行数(csv格式的文件)
2:生成从1到文件行数N的随机数m
3:检查m行是否包含特征字符“String”
4:如果是则替换为“nihao”,计数器+1,否则继续从第2步开始,直到计数器到1万

求大侠帮我用java写一下程序,不胜感激~~~~~

[code="java"][/code]
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Random;

public class Csvparser{

private int getToolNum(){
    int n = 0;
    try {
        //open the file
        BufferedReader reader = new BufferedReader(
                new FileReader("E:/workspace1/test/src/javaeyetest.csv"));
        String str=null;
        while(true){
            str= reader.readLine();
            n++;
            if(str ==null)break;
        }
    } catch (Exception e) {
        // TODO: handle exception
        }
    int tolnum = n-1;
    System.out.println("wen jian zui da hang shu ="+ tolnum);
    return n-1;
}

private void tiHuan( int num,int toolNum){
    try {
        //open the file
        BufferedReader reader = new BufferedReader(
                new FileReader("E:/workspace1/test/src/javaeyetest.csv"));
        FileOutputStream fos = new FileOutputStream(
                "E:/workspace1/test/src/javaeyetest1.csv");
        PrintStream stream = new PrintStream(fos);
        String str=null;

       for(int i = 0;i < toolNum;i++){
           if(i == 4){
               String strr = reader.readLine().replace("string","nihao");
               stream.println(strr);
               continue;
           }
            str= reader.readLine();
            stream.println(str);
       }           
    } catch (Exception e) {
        // TODO: handle exception
    }

}

private int suiJi(int toolNum){
    Random r=new Random(); 
    int sj = r.nextInt(toolNum);
    System.out.println("sheng cheng sui ji shu ="+sj);
    return sj;
}

public static void main(String argn[])throws IOException{   
    Csvparser ctx=new Csvparser();
    for(int i = 0;i<10;i++){
       ctx.tiHuan(ctx.suiJi(ctx.getToolNum()), ctx.getToolNum());
    }           
}

}

你这个是需要写一个完整的程序 包括读csv文件?

我这有一个程序,解析csv的程序,但是你还需要修改,自己生成随机数,替换string

1、读取csv文件。BufferedReader reader = new BufferedReader(new FileReader(d://XXX.csv));
2、文件行数。n=reader.readLine().length;
3、生成0到n的随机数Random r=new Random(); r.nextInt(n);
4、替换string为nihao。reader.readLine().replace("string", "nihao");

恩, 那我帮你写一个,之后发到你邮箱你?

为什么是计数器是1万。

[code="java"]import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FindReplaceInFile {
public static void main(String[] args) {
String targetString = "String";
String properString = "nihao";
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("c:/csvFile.csv")));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("c:/csvFile1.csv")));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
int index = 0;
while ((index = sb.indexOf(targetString, index)) != -1) {
sb.replace(index, index + targetString.length(),properString);
index += properString.length();
}
bw.write(sb.toString(), 0, sb.length());
bw.newLine();
sb.delete(0, sb.length());
}
br.close();
bw.flush();
bw.close();
} catch (FileNotFoundException e) {
System.out.println("File not found!!");
} catch (IOException e) {
e.printStackTrace();
}
}
}[/code]

我给的是简单的替换代码,楼主可以参考下。
楼主最好把你的头给你的任务说的详细些。可能涉及到效率问题。

"如果是则替换为“nihao”,计数器+1" 之后是继续替换还是结束?如果是继续替规则是什么

以下代码应该是符合你要求的,在我这边我已经调试通过,如你需求需要什么变动,可以好好读一下代码进行相应的改动!

package com.founder.csv;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Random;

public class ParserCSVFormateFile {

private static final String OLD_STRING = "String";
private static final String NEW_STRING = "nihao";

public static void main(String args[]) {
    readAndWriteCSVFile("F:/test.csv");
}

/**
 * To read .csv file and replace some string by condition
 * 
 * @param path
 * @author  Jiang Haiying
 */
private static void readAndWriteCSVFile(String path) {

    try {
        FileReader fileReader = new FileReader(path);
        BufferedWriter bufferWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/test.csv")));   

        ArrayList<String> list = getTotalContent(fileReader);
        int totalLine = list.size();
        int count = 0;

        if (totalLine != 0) {
            Random random = new Random();
            while (count <= 10000) {
                int radom = random.nextInt(totalLine);
                if (list.get(radom) != null && list.get(radom).contains(OLD_STRING)) {
                    list.get(radom).replace(OLD_STRING, NEW_STRING);
                } else {
                    radom = random.nextInt(totalLine);
                }
                count++;
            }
        }

        for (String str : list) {
            if (str == null || str =="") {
                continue;
            }
            bufferWriter.write(str);
            bufferWriter.newLine();
        }

        fileReader.close();   
        bufferWriter.flush();   
        bufferWriter.close(); 

    } catch (Exception e) {
        e.printStackTrace();
    } 
}

/**
 * To get all content from .csv file
 * 
 * @param file
 * @return the list of the content of .csv file
 * @throws IOException
 * @author  Jiang Haiying
 */
static ArrayList<String> getTotalContent(FileReader fileReader) throws IOException {

    ArrayList<String> list = new ArrayList<String>();
    LineNumberReader reader = new LineNumberReader(fileReader);
    String s = reader.readLine();
    list.add(s);
    while (s != null) {
        s = reader.readLine();
        list.add(s);
    }
    reader.close();
    fileReader.close();
    return list;
}

}