Java 根据前导词增加字符串中的数字
我有很大的文本文件,每个文件都包含字符串和数字。 我需要将这些数字增加一个固定的值,然后将它们写回到字符串中之前的位置 我想添加的值取决于数字前面的单词,每个没有这些关键字的数字都必须增加 我的方法是在空格处拆分字符,检查单词并在找到关键字后处理数字。然而,这给我留下了在单词和数字之间有空格字符的要求,这是不能保证的 此外,当从拆分数组重新组装字符串时,这可能会破坏以前的布局 例如: “马克相当大,189厘米,出生于1978年。然而,他只有一个关于句法分析的问题,那就是他真的不能动脑。” 在大的之后,高度应该增加5,在一年之后,这个数字减去19。数字1应该保持不变,因为only不是关键字Java 根据前导词增加字符串中的数字,java,python,parsing,Java,Python,Parsing,我有很大的文本文件,每个文件都包含字符串和数字。 我需要将这些数字增加一个固定的值,然后将它们写回到字符串中之前的位置 我想添加的值取决于数字前面的单词,每个没有这些关键字的数字都必须增加 我的方法是在空格处拆分字符,检查单词并在找到关键字后处理数字。然而,这给我留下了在单词和数字之间有空格字符的要求,这是不能保证的 此外,当从拆分数组重新组装字符串时,这可能会破坏以前的布局 例如: “马克相当大,189厘米,出生于1978年。然而,他只有一个关于句法分析的问题,那就是他真的不能动脑。” 在大的
我可以同时使用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
对不起,这有点难理解。。。请随意提问…这既广泛又需要意见答案和外部库,因此这里的内容实在离题。我删除了对库的搜索。请让我知道如何使我的问题不那么宽泛。编辑:我添加了一个示例以使其更加清晰。这似乎是一个合适的方法。我将添加对不同关键字的处理,但您的代码片段对我有很大帮助。谢谢