Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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_Python_Parsing - Fatal编程技术网

Java 根据前导词增加字符串中的数字

Java 根据前导词增加字符串中的数字,java,python,parsing,Java,Python,Parsing,我有很大的文本文件,每个文件都包含字符串和数字。 我需要将这些数字增加一个固定的值,然后将它们写回到字符串中之前的位置 我想添加的值取决于数字前面的单词,每个没有这些关键字的数字都必须增加 我的方法是在空格处拆分字符,检查单词并在找到关键字后处理数字。然而,这给我留下了在单词和数字之间有空格字符的要求,这是不能保证的 此外,当从拆分数组重新组装字符串时,这可能会破坏以前的布局 例如: “马克相当大,189厘米,出生于1978年。然而,他只有一个关于句法分析的问题,那就是他真的不能动脑。” 在大的

我有很大的文本文件,每个文件都包含字符串和数字。 我需要将这些数字增加一个固定的值,然后将它们写回到字符串中之前的位置

我想添加的值取决于数字前面的单词,每个没有这些关键字的数字都必须增加

我的方法是在空格处拆分字符,检查单词并在找到关键字后处理数字。然而,这给我留下了在单词和数字之间有空格字符的要求,这是不能保证的

此外,当从拆分数组重新组装字符串时,这可能会破坏以前的布局

例如: “马克相当大,189厘米,出生于1978年。然而,他只有一个关于句法分析的问题,那就是他真的不能动脑。”

在大的之后,高度应该增加5,在一年之后,这个数字减去19。数字1应该保持不变,因为only不是关键字


我可以同时使用java或python,因为这是我所知道的语言

我想我得到了一些东西:

public class Start {
    public static void main(String[] args){
        //Test String
        String s = "not4inc6desc3inc14";

        StringBuffer sb = new StringBuffer(s);

        //keep track where new word begins
        int newWord = 0;

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

            //chekc if the new Character is a number
            if(checkNumber(sb.substring(i, i+1))){

                //if the old word ends with "inc"
                //maybe try out .contains()
                if(sb.substring(newWord, i).endsWith("inc")){
                    //replace number
                    StringBuffer temp = new StringBuffer();
                    int j  = 0;

                    //get full number
                    for(j = i; j < sb.length() && checkNumber(sb.substring(j, j+1)); j++){
                        temp.append(sb.substring(j, j+1));
                    }

                    //modify number
                    int number = Integer.parseInt(temp.toString()) + 1;

                    //replace number
                    sb.replace(i, i + temp.length(), Integer.toString(number));

                    //number no longer needs to be checked for being a word
                    i=j;
                }
            }
        }

        //print test String
        System.out.println(sb.toString());

    }

    // Check if String is numeric
    private static boolean checkNumber(String s){
        try{
            Integer.parseInt(s);
        }catch(NumberFormatException e ){
            return false;
        }
        return true;
    }
}
公共类启动{
公共静态void main(字符串[]args){
//测试字符串
字符串s=“not4inc6desc3inc14”;
StringBuffer sb=新的StringBuffer;
//跟踪新单词的起始位置
int newWord=0;
for(int i=0;i

对不起,这有点难理解。。。请随意提问…

这既广泛又需要意见答案和外部库,因此这里的内容实在离题。我删除了对库的搜索。请让我知道如何使我的问题不那么宽泛。编辑:我添加了一个示例以使其更加清晰。这似乎是一个合适的方法。我将添加对不同关键字的处理,但您的代码片段对我有很大帮助。谢谢